运算符:用于算数表达式,比较表达式,逻辑,赋值表达式
左值:赋值运算符和其他少数的运算符,期望他的操作数是lval类型
左值(lval):表达式只能出现在赋值运算符的左侧
js 中变量,对象属性,数组元素为左值
副作用:
赋值运算符(期望其值为左值):给一个变量的属性赋值,那么所有使用变量的表达式都会改变
delect:删除属性类似于给属性赋值为undefined
优先级
注意:属性访问表达式和调用表达式的优先级比所有运算符都高
typeOf my function[x](y)
//属性访问---函数调用--类型运算符
特殊运算符(以保留字为运算符)
优先级:1
delect:删除属性
typeOf:检测属性类型
void:return undefined
优先级:5
instamce of:测试属性对象类
in:测试属性存在
解决方案:使用()来强制制定运算符次序
运算符的结合性
注意:一元,赋值,三元运算符有从右到左的结合性
运算次序
现象:
b=(a++)+a; 设a=1;
计算顺序:
1.计算b
2.计算a++ a++=1 随后立即增1
3.计算a a=2
4.计算c+a c+a=3
5.将c+a赋值给b b=3
算数表达式
- js中所有数字均为浮点型,除法运算后仍为浮点型
- 5/2=2.5
- 0/0=NaN
- 2/0=infinity
- 操作数(转换结果)是NaN 算数结果也为NaN
- 求余也为浮点型