JavaScript的运算符
目录
一、算术运算符:+、-、*、/、%
(1)优先级
(2)模运算(%)
(3)+、-
(4)自增(++)
(5)自减(--)
二、关系运算符(比较运算符)
三、逻辑运算符
1、逻辑与(&&)
2、逻辑或(||)
3、逻辑非(!)
四、赋值运算符(=)
1、格式
2、要求
3、复合赋值运算符
五、位运算符
1、按位与(&)
2、按位或( | )
3、按位异或(^)
4、按位左移(<<)
5、按位右移(>>)
六、条件运算符(? :)
一、算术运算符:+、-、*、/、%
(1)优先级
先乘除后加减,有括号的先算括号里的
(2)模运算(%)
运算结果的符号取决于%左边的数据,与%右边的数据无关
(3)+、-
+、- 既可以作为双目(两个变量)运算符,也可以作为单目(一个变量)运算符(表示正、负号 )
作为双目运算符,表示加减:10+2、10-2 +5 -5
作为双目运算符,表示正负-5+2 ==>(-5)+2
(4)自增(++)
是运算对象自己给自己加1
a++ 后缀表达式
++a 前缀表达式
注意:作为独立语句前缀和后缀没有区别;但是若在混合运算的表达式中是有区别的
var a = 5,b = 6,c
c = a++*b //先使用a的值,然后a+1;
c = ++a*b //给a+1,再使用a的值
(5)自减(--)
是运算对象自己给自己减1
a-- 后缀表达式
--a 前缀表达式
var d = 7,e = 8,f
f = d--*e //先使用d的值,再给d-1
f = --d*e //给d-1,再使用d的值
<body><script>var t = 1console.log(t%2) //模运算 1除以2,取余数var a = 5,b = 6, c //c = a++*b //先使用a的值,再给a+1c = ++a*b //给a+1,再使用a的值console.log('a=',a)console.log('c=',c)var d = 7,e = 8,f//f = d--*e//先使用d的值,再给d-1f = --d*e//给d-1,再使用d的值console.log('d=',d)console.log('f=',f)</script>
</body>
二、关系运算符(比较运算符)
1、关系运算的运算结果:true/false
45>25 --> true
45<25 --> false
2、运算符:> 、>=、 < 、<= 、==、 !=
== | 只比较值,不比较类型 |
=== | 全等。先比较类型,然后再比较值 |
!= | 只比较值,不比较类型 |
!== | 全不等 |
<script>//全等。运行算结果为true or falsevar t1 = 5,t2 = '5'console.log(t1==t2) //只比较值,不比较类型。值是相等的,结果为trueconsole.log(t1===t2) //先比较类型,然后再比较值。结果为false//全不等。运行算结果为true or falsevar a1 = 12,a2 = '12'console.log(a1!=a2) //只比较值,不比较类型。值是相等的,结果是falseconsole.log(a1!==a2) //先比较类型,然后再比较值。a1是Number型,a2是字符串,类型不同,结果是true
</script>
运行结果:
三、逻辑运算符
运算结果是逻辑值(true/false)
1、逻辑与(&&)
表达式1 && 表达式2 -->只有两个表达式的值都为true时,结果为true
注意:&&运算的短路现象:当'表达式1'为false时,不运算'表达式2'
<script>
//&&表示“与”运算同真为真,一假为假var a = 5,b = 15,c c = (a>=5) && (b%3!==0) //a要大于等于5 且 b对3取余不为0.结果为falseconsole.log(c)
</script>
&&运算的短路现象:
<script>
//&&与运算的短路现象。当前面的表达是为假时,&&与运算的结果已经出来了,就不运算后面的表达式var a = 5,b = 15,c var flag = falsec = (a!=5) && (flag=(b%3==0))console.log('flag=',flag)console.log('c=',c)</script>
2、逻辑或(||)
表达式1 || 表达式2 -->两个表达式中只要有一个为true,结果就为true
注意:||运算的短路现象:当'表达式1'为true时,不运算'表达式2'
<script>//||或运算,同假为假,一真为真var a = 5,b = 15,c c = (a>=5) ||(b%3!==0) //a要大于等于5 或 b对3取余不为0.结果为trueconsole.log(c)
</script>
||运算的短路现象:
<script>
//||或运算的短路现象。当前面的表达是为真时,||或运算的结果已经出来了,就不运算后面的表达式var a = 5,b = 15,c var flag = falsec = (a>=5) || (flag=(b%3===0))console.log('c=',c)console.log('flag=',flag)
</script>
3、逻辑非(!)
取反,true反是false,false的反是true.是单目运算符,必须放在运算对象的左边!表达式
逻辑运算符的优先级顺序:! && ||
四、赋值运算符(=)
1、格式
变量 = 表达式 var a= 15
2、要求
(1) ' = '的左边只能是变量,不能是常量或表达式
var a,b
a+b=15
10 = a
(2) 优先级是最低的
3、复合赋值运算符
+=、-=、*=、/=等
<script>
//复合赋值符号,+=、-+、/=var a = 5a+=5 //等价于a=a+5console.log('a=',a)var b = 3,c = 4,d = 5d *= b+c //等价于d = d x (c+b)=5 x (3+4) = 35console.log('d=',d)
</script>
五、位运算符
对数据的二进制位进行运算
1、按位与(&)
a&b 相对应的二进制位都为1时结果为1,否则结果为0
var a=10,b=15
a&b = 10
10 00001010
15 & 00001111
--------------------
10 00001010
<script>
//&按位“与”运算。相应的二进制位都为1时结果为1,否则结果为0var a = 10,b = 15,cc = a&b // 先将a,b转化为二进制 0000 1010 & 0000 1111 = 0000 1010 = 10console.log('c=',c)
</script>
2、按位或( | )
a|b 相对应的二进制位有一位为1时结果为1,都为0时结果为0
var a=10,b=15
a|b = 15
10 00001010
15 | 00001111
-------------------
15 00001111
<script>//|按位“或”运算。相应的二进制位有一位为1时结果为1,都为0时结果为0var a = 10,b = 15,ee = a|b // 先将a,b转化为二进制 0000 1010 | 0000 1111 = 0000 1111 = 15console.log('e=',e)
</script>
3、按位异或(^)
a^b 相对应的二进制位相同为0,不同为1
var a=10,b=15
a^b = 5
10 00001010
15 ^ 00001111
-------------------
5 00000101
<script>
//^按位异或运算。相应的二进制位相同为0,都不同为1var a = 10,b = 15,ff = a^b 先将a,b转化为二进制 0000 1010 ^ 0000 1111 = 0000 0101 = 5console.log('f=',f)
</script>
4、按位左移(<<)
运算对象 << 位移位数,位移时高位(左边)移出的位舍弃,低位(右边)补0 .
注:对于正整数和无符号数,左移n位等于让运算对象乘以2的n次方
var g = 2,h
h = g<< 1
g = 2,2的二进制为 0000 0010 向左位移一位为 000 0100 = 4
eg:
<script>
//<<按位左移。运算对象 << 位移位数。位移时高位(左边)移出的位舍弃,低位(右边)补0//注:对于正整数和无符号数,左移n位等于让运算对象乘以2的n次方var g = 2,hh = g<<1 //g = 2,2的二进制为 0000 0010 向左位移一位为 000 0100 = 4console.log('h=',h)
</script>
5、按位右移(>>)
运算对象 << 位移位数, 位移时低位(右边)移出的位舍弃,高位(左边)补0.
注:对于正整数和无符号数,右移n位等于让运算对象除以2的n次方
var k = 10,j
j = k>>1
k = 10,10的二进制为 0000 1010 向左位移一位为 000 0101 = 5
eg:
<script>
//>>按位右移。运算对象 >> 位移位数。位移时低位位(右边)移出的位舍弃,高位(左边)补0//注:对于正整数和无符号数,右移n位等于让运算对象除以2的n次方var k = 10,jj = k>>1 //k = 10,10的二进制为 0000 1010 向左位移一位为 000 0101 = 5console.log('j=',j)
</script>
六、条件运算符(? :)
是一个三目运算符(参加运算的对象有三个)
条件表达式的格式为: 表达式1 ? 表达式2 : 表达式3
先运算'表达式1',若结果为true则选择'表达式2'进行运算,并把'表达式2'的值作为整个条件表达式的值;若'表达式1'的结果为false,则选择'表达式3'进行运算,并把'表达式3'的值作为整个条件表达式的值。
eg:给页面输入一个数,判断他的奇偶。
<script>
//从页面输入一个数,判断它是奇数还是偶数var n = prompt('请输入一个整数')var pn = parseInt(n)var str = (pn%2===0?'是偶数':'是奇数')alert(str)
</script>
JavaScript的运算符相关推荐
- (4)javascript的运算符以及运算符的优先级
运算符的使用方法 在javascript的程序中要完成各种各样的运算,是离不开运算符的. 在javascript中,按运算符类型可以分为算术运算符.赋值运算符.比较运算符.逻辑运算符.条件运算符等. ...
- JavaScript instanceof 运算符深入剖析
简介: 随着 web 的发展,越来越多的产品功能都放在前端进行实现,增强用户体验.而前端开发的主要语言则是 JavaScript.学好 JavaScript 对开发前端应用已经越来越重要.在开发复杂产 ...
- JavaScript instanceof 运算符深入剖析【转载】
http://www.ibm.com/developerworks/cn/web/1306_jiangjj_jsinstanceof/ instanceof 运算符简介 在 JavaScript 中, ...
- 前端研习录(20)——JavaScript三元运算符
前端研习录(20)--JavaScript三元运算符 版权声明 三元运算符 版权声明 本文原创作者:清风不渡 博客地址:https://blog.csdn.net/WXKKang 重拾前端记忆,记 ...
- javascript关系运算符与逻辑运算符
原文来自javascript关系运算符与逻辑运算符 一.关系运算符 用于进行比较的运算符称作为关系运算符:小于(<).大于(>).小于等于(<=).大于等于(>=).相等(== ...
- 09.JavaScript算术运算符(加、减、乘、除、幂、余)、自增、自减、缩写、位移
JavaScript算术运算符 章节目录 上一篇:<类型转换> 下一篇:<比较运算符> 运算符是数学计算中的概念,我们从小学就在学习的+.-.*./就是最基础的运算符. 运算符 ...
- JavaScript 扩展运算符
文章目录 扩展运算符 使用扩展运算符复制数组 使用扩展运算符克隆数组 带对象的扩展运算符 剩余参数 参考文档 在本教程中,您将借助示例了解 JavaScript 扩展运算符. 扩展运算 ...
- javaScript的运算符和if。。else语句
比较运算符: ==等于 ===全等 !=不等于 >大于 <小于 >=大于或者是等于 <=小于或者是等于 使用:可以在条件语句中使用比较运算符进行对值比较,然后根据结果采取行动 ...
- Javascript 补位运算符
看到一个题目~~3.14得到是3,一下子有点蒙,之前在Javascript中完全没有见过~这个运算符.经查才知道~是补位运算符,但是跟原码反码补码又有点不同(在反码这一块,不记正负),好吧,大学的东西 ...
- javascript 位运算符
前几天看到国外人在github总结的javascript的奇巧淫技(http://t.cn/herRcq),里面对位运算提到的很多,所以来科普一下javascript的位运算.于是找到了w3cscho ...
最新文章
- $@ 与 $* 差在哪?
- SpringBoot中的线程池,你真的会用么?
- 8月份Github上最热门的Python开源项目
- UNIX网络编程 第3章 套接字编程简介
- memchace监控统计
- 查看表扫描次数,并对比索引对表查询的作用
- 时间序列模式识别_空气质量传感器数据的时间序列模式识别
- @MapperScan和@ComponentScan使用问题
- springboot整合elasticjob
- 中国最有名的8个程序员:不只雷军、张小龙,其中3人都当过首富!
- Android 图片圆角的设置
- 13. 星际争霸之php设计模式--正面模式
- lvm讲解与磁盘挂载问题排除
- javaweb前台对参数加密,后台解密,避免出现中文乱码
- php冗余,php – 如何使用规范化删除冗余?
- 企业微信(WeCoom)私有化客户端Api解决方案
- 神经网络为什么叫神经网络【一文看懂】
- 8位并行左移串行转换电路_单片机试题
- JS pos机- V0.2
- 自制动漫小姐姐图片api