js各运算符的执行顺序
本文原链接:https://www.sojson.com/operation/javascript.html
https://www.jianshu.com/p/d569c6ca1060
JavaScript运算符优先级
JavaScript 运算符优先级,是描述在计算机运算计算表达式时执行运算的先后顺序。 先执行具有较高优先级的运算,然后执行较低优先级的运算。 例如,我们常说的先执行相乘和除,再执行加减运算。
JavaScript 运算符
优先级 | 运算符 | 说明 | 结合性 |
---|---|---|---|
1 | [] 、. 、() |
字段访问、数组索引、函数调用和表达式分组 | 从左向右 |
2 | ++ -- -~!delete new typeof void | 一元运算符、返回数据类型、对象创建、未定 义的值 |
从右向左 |
3 | *、/、% | 相乘、相除、求余数 | 从左向右 |
4 | +、- | 相加、相减、字符串串联 | 从左向右 |
5 | <<、>>、>>> | 左位移、右位移、无符号右移 | 从左向右 |
6 | <、<=、>、>=、instanceof | 小于、小于或等于、大于、大于或等于、是否 为特定类的实例 |
从左向右 |
7 | ==、!=、===、!== | 相等、不相等、全等,不全等 | 从左向右 |
8 | & | 按位“与” | 从左向右 |
9 | ^ | 按位“异或” | 从左向右 |
10 | | | 按位“或” | 从左向右 |
11 | && | 短路与(逻辑“与”) | 从左向右 |
12 | || | 短路或(逻辑“或”) | 从左向右 |
13 | ?: | 条件运算符 | 从右向左 |
14 | =、+=、-=、*=、/=、%=、&=、|=、^=、<、<=、>、>=、>>= | 混合赋值运算符 | 从右向左 |
15 | , | 多个计算 | 按优先级计算,然后从右向左 |
圆括号处理Javascript运算说明
圆括号用于改变由运算符优先级确定的计算顺序。 这就是说,先计算完圆括号内的表达式,然后再将它的值用于表达式的其余部分。
var result = 10 * 5 + 3; document.write(result); document.write("<br/>"); result = 10 * (5 + 3); document.write(result); // 输出如下: // 53 // 80
在第一个表达式中,按照优先级运算,先运算的是 10 * 5
,然后再加3
,结果为50
。
在第二个表达式中,我们用圆括号开改变优先级,先让(5 + 3)
,结果为8
,然后用8
去乘以10
,结果是80
/:除法,如:int a = 8/9;
%:取余运算: int a = 10%2;
Javascript逻辑运算符
Javascript中主要区分 ==
和 ===
,同理 !=
和 !==
的关系
var a = '100'; var b = 100; document.write(a==b); document.write(a===b); document.write(a!=b); document.write(a!==b); // 输出如下: // true // false // false // true
因为 Javascript 是弱类型语言,在数据类型上处理不是那么严格,也就造成了 '100'==100;返回true
,需要严格一点去比较'100'===100
这个时候不仅比较值,还比较类型,所以返回false
。
同理 !=
和 !==
也是一样,前者比较的是值,后者是类型和值都要比较。
Javascript 运算符总结
其实在运算过程中,和其他语言一样,最好直接带上括号,如var a = 1; a = (a + 100) >>(a+1);
和 var a = 1; a = a + 100>>a+1;
结果都是25,运算顺序也一样,前面的可读性更好吧?