我知道严格比较运算符和松散比较运算符之间的区别。显然 x == y
不同于 x === y
。但是每当我看到使用 typeof
的代码时,它总是使用 ===
。
如果 typeof
运算符的计算结果总是字符串(例如“boolean”、“number”等),那么 typeof x == 'y'
和 typeof x === 'y'
总是呈现相同的结果?如果是这样,为什么要使用 ===
?
我知道进行严格比较会更快,但除非在极端情况下,否则性能提升应该是察觉不到的。另一个想法是,始终使用 ===
会更清楚,因为它确实会导致 类似 操作的问题,例如 x == undefined
与 x === undefined
。将这些情况减少到 ==
以改进缩小和传输编码是否值得,还是保留 ===
以保持运行时性能和总体清晰度更好?
最佳答案
在这种情况下,这两种方式绝对没有任何有用的区别。
The typeof operator returns a string indicating the type of the unevaluated operand.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof
我们知道它总是一个字符串,而且它只会是一些预定义值的字符串,因此在比较 typeof 的结果时没有明确使用严格运算符的理由,但是应该使用严格的比较运算符以提高可读性,并避免该语句出现任何可能的异常。
但是
Loose equality using ==
Loose equality compares two values for equality, after converting both values to a common type.
话虽这么说,使用严格比较应该稍微快一些,因为没有转换,但差异是如此之小以至于无关紧要,并且micro optimizing is a very bad thing
编辑
关于javascript - 在 JavaScript 中,typeof x == 'y' 和 typeof x === 'y' 之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30813154/