学习总结自沙翼老师的前端音频教程#陪你读书(JavaScript WEB前端)#(喜马拉雅)
一元操作符(9个)
- 定义:只可以操作一个表达式的符号
- 一元加、一元减、递增加、递增减、按位非、逻辑非、typeof、delete、void
- 一元加/减:将表达式转换成数字
- typeof:用于判断数据类型
- delete:删除对象属性
- 逻辑非(!*):转换成布尔类型之后取反
!!a相当于将操作数转换成布尔类型
- void:无论表达式是什么,都返回void
以下使用 a 代替操作数(仅分析一元加/减
和递增加/减
):
1. 一元加/减
一元加(+a)/一元减(-a)
-
相同点:判断操作数
a
是否是数值类型
,如果不是,将操作数a
先转换成数值类型
-
不同点:一元减取负数
-
应用:将表达式转换成数字
var b = false
-b // false => 0 => -0
2. 递增加/减
类型(2种):前置递增加/减(++a / --a)、后置递增加减(a++ / a–)
- 区别:
前置递增加/减
先自加自减
后再执行包含其的语句,后置递增加/减
先执行包含其的语句再自加自减
。
var a = 4
var b = 6
var c = ++a + b--
// ++a(前置:自加后执行语句)=> (++a) = 5, a = 5
// b--(后置:执行语句后自减)=> (b--) = 6, b = 5
// c = (++a) + (b--) => 5 + 6 => 11
操作符运算三特点
1. 优先级
属性访问 > 一元操作符 > 乘除 > 加减 > 比较 > 相等 > 与运算 > 或运算 > 三目运算 > 赋值运算
- 属性访问优先级最高(obj.name / obj[‘name’)
- 一元操作符次之
- 赋值运算最低
- 乘除大于加减(同数学)
- 相等 > && > ||
2. 结合性
左/右结合:从左/右开始运算
- 当操作符优先级相同的时候
- 其中只有一元运算符、赋值运算符、三目运算符从右往左运算
3. 运行顺序
当表达式中含有表达式的的时候,从左往右运算
应用
var a = 1
!a++ // false
x = a ? b : c ? d : e ? f : g
// 根据结合性:三目从右开始运算
x = a ? b : (c ? d : (e ? f : g))
var a = 1
var b = a++ + ++a
// 根据运行顺序:从左往右
1. 计算b
2. 计算a++,(a++)=> 1,此时 a = 2
3. 计算+
4. 计算++a,(++a)=> 2+1 => 3,此时 a = 3
5. 计算结果 b = (a++) + (++a) => 1 + 3 => 4
var a = 1
b = a+++a // b = 3, a = 2