主要介绍表达式与操纵符中常用的重要知识点
x
, 3.14
, y
都是。主要包括字面值,关键字和变量引用var arr = [1,,,,3];
.
操作符和[]
操作符[]
注意:当参数为字符串时访问的是这个属性名为这个字符串的属性["name"]
,参数不是字符串,为变量时访问的是变量中保存的属性[name]
,假设name的值为jack,那访问的就是对象中属性名为jack的属性TypeError
(ES2020新增)可以加一个’ ? ',例如
obj?.name,obj?[name]
如果对象为空不会报错,但结果是undefined,函数的调用也可以这么使用,语法一样fun?.()
?.
只检查是否为null和undefined,不检查右边的是否存在。左边为空或者未定义。则短路,表达式返回undefinedin
,左侧是字符串(或者可以转成字符串),右侧是对象,左侧是右侧的属性名返回true
,用in也可以测试是否有某个方法instanceof
操作符与Java
一致,但是它是在原型链上找&&
在操作数不是布尔值是真性值或者假性值的时候,在哪里短路就返回哪个值("str" && "s" && null)
,返回null,因为在null短路||
与&&
一样,操作数为真性值或者假性值时,在哪里短路就返回哪个值??
操作符a ?? b 等价 (a !== null && a!== undefined)? a : b
delete
操作符删除数组元素不会改变数组长度,删除对象属性则是直接删除+,-,++,--