[小技巧]获取JS目标操作数的逻辑值

版权声明

本文出自 “ 幻冥极地 ” 博客 ,作者 小貘 采用 署名-非商业性使用-相同方式共享 协议。转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。
https://www.moorehy.com/archives/325

逻辑非基础知识

逻辑非操作符由一个叹号( ! )表示,可以应用于ECMAScript中的任何值。无论这个值是什么数据类型,这个操作符都会返回一个布尔值。逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再对其求反。也就是说,逻辑非操作符遵循下列规则:

  • 如果操作数是一个 对象 ,返回 false
  • 如果操作数是一个 空字符串 ,返回 true
  • 如果操作数是一个 非空字符串 ,返回 false
  • 如果操作数是数值 0 ,返回 true
  • 如果操作数是任意 非0 数值(包括 Infinity ),返回 false
  • 如果操作数是 null ,返回 true
  • 如果操作数是 NaN ,返回 true
  • 如果操作数是 undefined ,返回 true ;

下面几个例子展示了应用上述规则的结果:

获取逻辑值小技巧

逻辑非操作符也可以用于将一个值转换为与其对应的布尔值。而同时使用两个逻辑非操作符,实际上就会模拟 Boolean() 转型函数的行为。其中,第一个逻辑非操作会基于无论什么操作数返回一个布尔值,而第二个逻辑非操作则对该布尔值求反,于是就得到了这个值真正对应的布尔值。当然,最终结果与对这个值使用 Boolean() 函数相同,如下面的例子所示:

参考文献

  1. JavaScript高级程序设计(第三版),P44-45

发表评论

电子邮件地址不会被公开。 必填项已用*标注