首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(!~index)比(index === -1)快吗?

(!~index)比(index === -1)快吗?
EN

Stack Overflow用户
提问于 2012-09-04 23:04:33
回答 3查看 91关注 0票数 3

在函数返回-1的情况下(例如indexOf()),我经常遇到使用(!~val)而不是(val === -1)的人。

在我看来,与-1比较相比,逻辑NOT + NOT语句的可读性非常差。是否有足够的速度差异来保证使用一个而不是另一个?或者,如果不是速度,还有其他一些我没有使用逐位not而不是===的原因?

(如果这是dup,请提前道歉,但我找不到这个问题的确切答案。在SO或Google中搜索"!~“不太有效)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-04 23:11:05

不,它们绝对不是一样的。

按位转换将执行隐式类型强制。===运算符检查类型是否相等。

所以这两个可以给出完全不同的结果。

代码语言:javascript
复制
var val = "-1";

(!~val) // true
(val === -1)  // false

在这种情况下,我认为比较的意图和正确性远远超过了性能方面的考虑。确定你到底想要比较什么,并为工作使用正确的比较。

票数 3
EN

Stack Overflow用户

发布于 2012-09-04 23:06:54

这是一个有意义的性能差异吗?可能不会,但这完全取决于VM。

你总是可以使用像http://jsperf.com/这样的东西来找到答案

票数 1
EN

Stack Overflow用户

发布于 2012-09-04 23:21:35

Be pragmatic,追求可读性

这两个都是快速的f@$#关闭。

如果你的脚本有性能问题,它肯定不会归结为这个布尔检查。但正如其他人所说的那样,这两者并不(完全)相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12266301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档