首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果其中一个元素是字符串,我可以在JavaScript中使用double equal吗?

如果其中一个元素是字符串,我可以在JavaScript中使用double equal吗?
EN

Stack Overflow用户
提问于 2020-05-28 17:40:52
回答 4查看 356关注 0票数 0

我是JS的新手,我知道==双比较表示相等,===三重比较表示相等和类型。我的老师说我应该用三倍。但是,当其中一个元素是字符串时,如果我使用double equal,则不会看到任何向下的效果。

代码语言:javascript
运行
复制
'' == 0 // true
'10' == 10 // true
'dog' == 'cat' // false

因此,当某些元素是字符串(避免此'false' == false)时,我使用的是“始终为null双相等”,在检测nullundefined时使用“三重”。

我的做法有什么不好的地方吗?

我检查了前面的答案:Which equals operator (== vs ===) should be used in JavaScript comparisons?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-05-28 18:13:25

以我的个人工作经验为基础,我从未使用过抽象相等操作符(==)而不是严格相等操作符(===)。

因为==运算符可能有一些不可预测的行为,例如

代码语言:javascript
运行
复制
'0' == false    // true

代码语言:javascript
运行
复制
'0' === false   // false

第二种情况通常是您希望代码所做的事情。

而且,==运算符的性能比===运算符要高得多。

您可以在ecmaScript文档中阅读更多有关这方面的内容:

相等(==)运算符:https://www.ecma-international.org/ecma-262/5.1/#sec-11.9.1

抽象等式比较算法:https://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3

严格等于(===)运算符:https://www.ecma-international.org/ecma-262/5.1/#sec-11.9.4

严格相等比较算法:https://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6 (这两种比较算法可能会向您说明为什么严格相等在性能上更好)

票数 2
EN

Stack Overflow用户

发布于 2020-05-28 17:45:57

如果读取链接的答案,还会读取这段涉及字符串的代码:

代码语言:javascript
运行
复制
'' == '0'           // false
0 == ''             // true
0 == '0'            // true

false == 'false'    // false
false == '0'        // true

这些都是字符串,但行为仍然不是你所期望的那样。的确,正如你的老师说的那样,使用===可以让你的生活更轻松:)

票数 2
EN

Stack Overflow用户

发布于 2020-05-28 17:47:31

如果使用' 10‘== 10,那么js解释器必须执行类型转换。这需要一点表演。

如果您正在使用像sonarqube这样的代码质量工具,您将得到一些“提示”来修复它。

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

https://stackoverflow.com/questions/62071080

复制
相关文章

相似问题

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