链式运算符?.
使用了?.运算符,直接在链式调用的时候判断,左侧的对象是否为null或者undefined。如果是,就不再往下运算,直接返回undefined。
Null判断运算符 ??
ES5 || 缺陷:原本意图——左侧为null或者undefined时,使默认值生效。但实际上左侧有部分假值,如:‘’ false 0 都使默认值生效,这明显不符合逻辑的,假如我们需要的值就是’’ false 0 怎么办?
??类似 || 但是只有左侧为null或undefined才生效
这个运算符很适合判断函数参数是否赋值。
function Component(props) {
const enable = props.enabled ?? true;
// …
}
let num=null??1
let number=false??2
console.log(num,number)//1 false
let num1=''||1
let number1=false||2
console.log(num1,number1)//1 2
Object.is() 同值相等
ES5 比较两个值是否相等,只有两个运算符:相等运算符== 和严格相等运算符===。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。Object.is()则保证最严格的相等。
+0 === -0 //true
NaN === NaN // false
Object.is(+0, -0) // false
Object.is(NaN, NaN) // true