运算符和运算符的优先级
一、算术运算符
-
包括 加 减 乘 除 取余
-
当对非Number类型运算时,先转换为Number类型,再运算
-
任何值和 NaN 运算,结果都是 NaN
-
特殊:加法运算中,任何值和字符串相加,先将该值转为字符串,再做拼串操作
-
利用上述特性,可以通过算术运算,在字符串和数值之间进行强制类型转换
二、一元运算符正负号和自增自减
- 数据类型前加正负号,将该数据类型转为Number类型,再加正负号,- (NaN) -> NaN
- ++ / – 符号在前先计算再使用,符号在后先使用再计算
三、逻辑运算 或 与 非
- !运算,对于布尔值,取反,对于非布尔值,先转为布尔值,再取反
- && 运算,都为true才返回true,如果前一个值为false,则不会继续往后判断,并直接返回false
- || 运算,有一个true就返回true,如果前一个值为true,则不会继续往后判断,并直接返回true
- 对于非布尔值进行 与 或 运算时,先将其转换为布尔值,然后运算,并且返回原值
- 与 运算,第一个值为true,则必然返回第二个值,第一个值为false,则直接返回第一个值
- 或 运算,如果第一个值为false,则返回第一个值,否则返回第二个值
四、赋值运算符
- 将等号右边的值赋予左边
- 可以简写,如
a += 3
五、关系运算符
- 用于判断大小
- 非数值比较时,先都转为数值,然后比较大小。
- 对于两侧都是字符串时,比较其 unicode 编码的大小
- NaN和任何值比较结果都是false
六、相等运算符
- == / !=,非数值转为数值,然后比较是否相等
- ===/!== ,还要比较数据类型是否也相等
七、条件运算符
- 条件表达式?语句1:语句2,条件表达式成立执行语句1,否则执行语句2
- 求值结果是非布尔值,会将其转为布尔值
八、运算符的优先级
- 按照优先级规范表
- 括号里面优先级最高