JavaScript中 !! 运算符能做什么?

AI 概述
JS 中的!!运算符,在做数据校验时,经常会用到,而且在面试的时候也经常会问道!!运算符,那么它到底是个什么东东呢,接下来将揭开我们将神秘的面纱。 在一些源码中你可能会看到类似这样的代码: $.isArrayLike = function(obj) { var length = !!obj && "length" in obj && obj.length; var type =...

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

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

以上关于JavaScript中 !! 运算符能做什么?的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

0

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

微信微信 支付宝支付宝

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

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » JavaScript中 !! 运算符能做什么?

发表回复