【发布时间】:2012-09-04 16:26:04
【问题描述】:
几周前,我在C 中阅读了关于比较运算符的主题Is < faster than <=?。据说< 和<= 之间的性能没有区别,因为它们被解释为相同/相似的机器命令。
同时,在我们公司的“最佳实践”中,有人说我们应该始终使用“===”来比较事物,而不是“==”。所以,我开始怀疑这是否总是合适的,因为我习惯使用“==”和“typeof ... ==”并且不想改变我的写作方式:-]
请注意,这是在 JavaScript 的上下文中。
所以,我有一点研究,这里Which equals operator (== vs ===) should be used in JavaScript comparisons?据说:
这是因为相等运算符 == 确实类型强制...意思 解释器隐式尝试转换值,然后 进行比较。
另一方面,身份运算符 === 不做类型 强制,因此它不会转换值的值 比较时
我开始怀疑这是否意味着当我使用“===”运算符时,我将获得良好的性能,因为不会花费任何资源来转换操作数。而在所有的代码都变成了机器命令之后,这是否意味着就像C在使用<和<=时没有区别一样,在JavaScript和其他语言中也是一样的?
【问题讨论】:
-
通向地狱的道路由微优化铺平。
-
“毕竟编码都变成了机器指令” 但是不同语言中的每一条相同的指令不一定都会变成相同的机器码。
-
您希望比较运算符执行类型强制吗?不?然后使用
===。我在这里看不到选择。 -
值得一提的是,在 2017 年,
===比 V8 中的==更快,当编译器可以通过执行分析证明类型相同时 - 代码的后续运行可以在===中使用快捷方式他们不能在==。这是实现细节,可能会改变 - 使用正确的运算符。
标签: javascript performance equality comparison-operators equality-operator