1 && ||
用法没什么好说的。
挖深一点,这里涉及到js隐性类型转换。
2 || 和 ?? 的区别
区别在于对于:
- ?? 只对于undefined和null做判断,而||会将数值类型转为Boolean再做判断。
- 要注意的是,对于空字符串的处理不同。
undefined ?? true // true
undefined ?? false // false
null ?? false // false
null ?? true // true
false ?? true // false
false ?? "" // false
"" ?? true // ""
"" ?? false // ""
"" ?? null // ""
undefined || true // true
undefined || false //false
null || false // false
null || true // false
false || true // true
false || "" // ""
"" || true // true
"" || false // false
"" || null // null
3 ?.链判断运算符(optional chaining operator)
?. 判断左侧对象是否为null,undefined,如果是,则不再继续运算,而是返回undefined。
有用的写法,在判断函数时
func?.();相比较于func && func(); 的写法更加清爽。
4 逻辑赋值运算符
||=
、&&=
、??=
相当于先进行逻辑运算,然后根据运算结果,再视情况进行赋值运算。
person.name = person.name || '123'
person.name ||= '123' 简化了写法