JavaScript中 !! 运算符能做什么?
JS中的!!
运算符,在做数据校验时,经常会用到,而且在面试的时候也经常会问道!!
运算符,那么它到底是个什么东东呢,接下来将揭开我们将神秘的面纱。
在一些源码中你可能会看到类似这样的代码:
$.isArrayLike = function(obj) { var length = !!obj && "length" in obj && obj.length; var type = $.type(obj); if (type === "function" || $.isWindow(obj)) { return false; } }
上面的代码中就用到了!!运算符,乍看有点懵,其实按照js内置 “!” 运算符从右到左按次序剖析,也就理解了。
先看内层运算: !obj
,这是一个非运算:
当obj
为假时(null/undefined/false/NaN/””等),非运算后的结果未false
;
当obj
为真时(非null/undefined/false/NaN/””等),非运算后的结果未true
;
即:
!obj ===false
( obj为真时 )
!obj ===true
( obj为假时 )
再进行一次取非操作,结果就很明显了:
!!obj === true
( obj为真时 )
!!obj ===false
( obj为假时 )
所以,”!!”操作符是判断变量是否真正为真(非null/undefined/false/NaN/””等)的很简明的实现方式,省去了大量的&&
运算,如果用&&
来实现上述求真逻辑,代码表现如下:
if( obj !== null && obj !== undefined && obj !== NaN && obj !== "" && obj !== false){ //statements }
这样看起来就显得很臃肿。
总结
!!运算符
在js中是求真的一个非常优秀的方法,!!
运算符可以将右侧的值强制转换为布尔值,这也是将值转换为布尔值的一种简单方法。如下:
console.log(!!null); // false console.log(!!undefined); // false console.log(!!''); // false console.log(!!0); // false console.log(!!NaN); // false console.log(!!' '); // true console.log(!!{}); // true console.log(!![]); // true console.log(!!1); // true console.log(!![].length); // false
所以在日常的实际项目开发中要用进去了。
1. 本站所有免费资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!
2. 本站不保证所提供下载的免费资源的准确性、安全性和完整性,免费资源仅供下载学习之用!如有链接无法下载、失效,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或技术教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
5. 加入前端开发QQ群:565733884,我们大家一起来交流技术!
码云笔记 » JavaScript中 !! 运算符能做什么?
2. 本站不保证所提供下载的免费资源的准确性、安全性和完整性,免费资源仅供下载学习之用!如有链接无法下载、失效,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或技术教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
5. 加入前端开发QQ群:565733884,我们大家一起来交流技术!
码云笔记 » JavaScript中 !! 运算符能做什么?