if (!!something){} 比 if(something){} 效率高?
发布于 1个月前 作者 sjfkai 300 次浏览 来自 问答

今天看pomelo的sample,发现好多地方用到了if(!!something){}

var channel = this.channelService.getChannel(name, flag);
    if( !! channel) {
        users = channel.getMembers();
    }
var sessionService = self.app.get('sessionService');

    //duplicate log in
    if( !! sessionService.getByUid(uid)) {
        next(null, {
            code: 500,
            error: true
        });
        return;
    }

所以不耻下问← 忽略我的小学语文水平,我错了!!。。。。

7 回复

我觉得你这个成语不能这么用,高中语文典型错误啊。

我觉得两个感叹号应该是代码风格的问题,表示先强制转换为布尔再判断。 因为我简单测试了一下,还是不转换快。。。

楼主水平很高啊,都能下问了啊:)

!!(var) 可以把任何 JavaScript 表达式转换为等价的布尔变量。这里 var 可以是任何变量,比如数字,函数或者对象。

!!如果作为 unary 操作单值,确实没有必要,可以直接用 if (var) 来判断; 但是如果是要做比较的话,首先使用严格的 === 可以避免很多预想不到的等价。

!!最大的作用是要预防 NaN,这是 JS 的一个坑之一,因为 NaN === NaN //返回 false,但是 !!NaN === !! NaN 就是 true,符合常人逻辑了

楼主看代码很细心啊,赞一个

回到顶部