为什么不使用javscript只使用严格相等运算符而不是抽象和严格相等运算符?
我在IRC问过,有人评论说微软不想让“===”的功能进入“==”,因为它会破坏网站。尽管如此,没有人能够提出任何参考资料。不久之后,另一个人也对微软的责任表示怀疑。
是否有人可以通过引用提供有关其原因的信息?
答案 0 :(得分:3)
JavaScript使用类型强制来自动在不同类型的值之间进行转换。但有时,人们希望区分"1"
和1
,或1
和true
之间。这是==
和===
之间(以及!=
和!==
之间)的根本区别。如果没有这种区别(例如,如果===
被删除),则必须跳过箍来测试类型和值的相等性(如果{{1}的功能,则类似于独立的值测试被删除了。)
我没有听说过微软的故事。我怀疑这是虚假的,并且会让一些人倾向于将微软归咎于每一个被认为是邪恶的东西。但是,如果微软,Mozilla,谷歌,雅虎,几乎任何经验丰富的JS程序员等对==
和==
的合并感到满意,我会感到非常惊讶。它确实会破坏大量代码并从语言中删除一个非常有用的工具。
答案 1 :(得分:1)
我相信这是因为他们想要允许某些形式的隐式类型转换。我认为这个问题确实来自这样一个事实:规则(虽然善意而且没有太大的危害)在组合时变成了怪物,或者在抨击“==”的帖子中通常提到的“陷阱”案例之一。我个人觉得有一个选择,虽然不知道它存在可能是危险的。