CNode

if (!!something){} 比 if(something){} 效率高?

问答
Ssjfkai发布于12 年前最后回复12 年前7 回复4037 浏览0 收藏

今天看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)

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

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

O
otinn#2·12 年前

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

R
russj#3·12 年前

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

R
russj#4·12 年前

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

!!最大的作用是要预防 NaN,这是 JS 的一个坑之一,因为 NaN === NaN //返回 false,但是 !!NaN === !! NaN 就是 true,符合常人逻辑了
S
sjfkai#6·12 年前
C
CocaCola183#7·12 年前

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

参与回复
登录后即可参与回复。登录