2.8 KiB
2.8 KiB
运算符
术语
运算元 ——运算符应用的对象 比如说 5*2 有两个运算元 左运算元5 和 右运算元2
如果一个运算符只对应一个运算元 那么就是一元运算符 如果一个运算符 对应两个运算元 那么他就是二元运算符
数学运算符
- 加 +
- 减 -
- 乘 *
- 除 /
- 取余 %
+
- 用来做加的数学运算
- 如果被应用于字符串 就用来字符串连接
- 作为一元运算符的时候 确定数值正负
运算符优先级
下表按从最高到最低的优先级列出JavaScript运算符。具有相同优先级的运算符按从左至右的顺序求值。
运算符 | 优先级 |
---|---|
. [] () | 字段访问、数组下标、函数调用以及表达式分组 |
++ -- - ~ ! delete new typeof void | 一元运算符、返回数据类型、对象创建、未定义值 |
* / % | 乘法、除法、取模 |
+ - + | 加法、减法、字符串连接 |
<< >> >>> | 移位 |
< <= > >= instanceof | 小于、小于等于、大于、大于等于、instanceof |
== != === !== | 等于、不等于、严格相等、非严格相等 |
& | 按位与 |
^ | 按位异或 |
| | 按位或 |
&& | 逻辑与 |
|| | 逻辑或 |
?: | 条件 |
=、+=、-=、*=、/=、%=、&=、|=、^=、<、<=、>、>=、>>= | 混合赋值运算符 |
, | 逗号运算符 |
赋值运算符 =
=
是一个运算符 会返回一个值
x=5
的执行分为两步
把5给x
返回x的值
思考 let a=1; let b=2; let c=3-(a=b+1)
的执行过程
点击查看答案
根据运算符优先级规则,先运算()里面的a=b+1对于 a=b+1, +的优先级大于=, 所以先运算b+1
b的值为2 所以=把b+1 也就是2+1的结果给a 并返回赋值后a的值 3
接下来,运算c=3-(...) 加减运算优先级大于赋值运算,所以 ()里运算的结果为3 所以 3-3=0
最终执行c=0 即把后面运算的结果0给c 然后 返回赋值后的c的值 0
注: 为了代码的可读性 应不要写这样的代码
链式赋值
a = b = c = 2 + 2;
链式赋值从右到左进行计算。首先,对最右边的表达式 2 + 2 求值,然后将其赋给左边的变量:c、b 和 a。最后,所有的变量共享一个值。
上面的代码和下面的是一样的:
c = 2 + 2;
b = c;
a = c;
运算同时赋值
这是把运算符和赋值两个操作的缩写形式
原来的:
let n = 2;
n = n + 5;
n = n * 2;
现在可以用+=,-+, *=, /=, %= ...来对上面的代码进行缩写
现在:
let n=2
n+=5
n*=2
alert(n)
这类运算符的优先级与普通赋值运算符的优先级相同,所以它们在大多数其他运算之后执行:
let n = 2;
n *= 3 + 5;
alert( n ); // 16 (右边部分先被计算,等同于 n *= 8)
自增、自减
-
自增
-
自减