运算符 && || ?? ?. ||= &&=

1 && ||

用法没什么好说的。
挖深一点,这里涉及到js隐性类型转换。

2 || 和 ?? 的区别

区别在于对于:

  1. ?? 只对于undefined和null做判断,而||会将数值类型转为Boolean再做判断。
  2. 要注意的是,对于空字符串的处理不同。
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' 简化了写法 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容