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

所以在日常的实际项目开发中要用进去了。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:
1. 本站所有文章教程及资源素材均来源于网络与用户分享或为本站原创,仅限用于学习和研究。
2. 如果内容损害你的权益请联系客服QQ:1642748312给予处理。
码云笔记 » JavaScript中 !! 运算符能做什么?

发表回复

IT互联网行业相关广告投放 更专业 更精准

立即查看 联系我们