JS运算符优先级

先做一道题:

var val = 'abcd';
console.log('Value is ' + (val === 'abcd') ? 'A' : 'B');

控制台打印出的结果是  // A

因为连接符的优先级高于三元运算符,所以该题目相当于:'Value is ' + true ? 'A' : 'B',由此得出该题的两个变体:

console.log('Value is ' + val === 'abcd' ? 'A' : 'B'); // B

console.log('Value is ' + (val === 'abcd' ? 'A' : 'B')); // Value is A

总结一个运算符优先级表格,清晰明了

优先级 运算类型 关联性 运算符
20 圆括号   ()
19 访问调用 从左到右 ... . ..., ...[...], new带参数:new ...(...) ,函数调用:...(...)
18 new(无参数) 从右到左 new(创建实例)
17 后置递增 从右到左 ...++, ...--
16 从右到左

!, ~, +, -, ++..., --..., typeof(返回字符串), void,  delete, await

15 从右到左 **
14 乘除 从左到右 *, /, %
13 加减 从左到右 +, -
12 按位左移 从左到右 <<, >>, >>>(无符号)
11 小于 从左到右 <, <=, >, >=, in(属性是否存在,右侧必须是对象), instanceof
10 等号 从左到右 ==, !=, ===, !==
9 按位与 从左到右 &
8 按位异或 从左到右

^(相同为0,不同为1)

7 按位或 从左到右 |
6 逻辑与 从左到右 &&
5 逻辑或 从左到右 ||
4 条件运算符 从右到左 ... ? ...  : ...
3 赋值 从右到左 =, +=, -=, *=, /=, %=, <<=(左移), >>=(右移),>>>=(无符号),  &=, ^=, |=
2 yield,yield* 从右到左  
1 展开运算符   ...
0 逗号 从左到右 ,

 

 

 

 

 

 

 

你可能感兴趣的:(JS,jQuery)