【发布时间】:2013-03-24 00:28:46
【问题描述】:
发件人:http://www.2ality.com/2011/12/strict-equality-exemptions.html
JavaScript 有两个运算符用于判断两个值是否相等:
- 严格相等运算符 === 只考虑具有相同类型的相等值。
- “正常”(或宽松)相等运算符 == 在比较严格相等之前尝试转换不同类型的值。
给 JavaScript 初学者的建议是完全忘记 == 并始终使用 ===。
但是不使用 == 运算符的原因是什么?会不会带来安全风险?
但是使用 typeof 运算符我们可以确定结果将是一个字符串。然后 == 可以安全使用,因为我们可以确定它不会执行任何转换恶作剧:
if (typeof x == "function") {
...
}
【问题讨论】:
-
就我个人而言,我从未在 JavaScript 中使用过
===,哪怕一次。 -
如果
===没有损坏,请不要修复它。 -
@Kolink 这并不值得骄傲。
-
@Maizere 如果您知道需要执行隐式转换,请使用
==运算符。 -
@Kolink 这是在找麻烦。我和任何人一样讨厌毫无根据的笼统概括。但仅仅因为我了解我可以安全地使用
mysql_*函数,并不意味着我会使用它们。一方面,准备好的语句比mysql_*提供的任何东西都更具可读性。将来它们也会从 PHP 中删除。
标签: javascript operators equality