if (!!something){} 比 if(something){} 效率高?
发布于 10 年前 作者 sjfkai 3713 次浏览 最后一次编辑是 8 年前 来自 问答

今天看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,符合常人逻辑了

@russj 感谢!

@otinn 讨厌~别笑

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

回到顶部