JavaScript中typeof x == 'y'和typeof x === 'y'有区别吗?
In JavaScript, is there any difference between typeof x == 'y' and typeof x === 'y'?
我知道严格比较运算符和松散比较运算符之间的区别。显然 x == y
不同于 x === y
。但是每当我看到使用 typeof
的代码时,它总是使用 ===
.
如果 typeof
运算符的计算结果总是字符串(例如 'boolean'、'number' 等),那么 typeof x == 'y'
和 [=19 就不会=] 总是呈现相同的结果?如果是这样,为什么要使用 ===
?
我知道进行严格比较会更快,但除了在极端情况下,性能提升应该是察觉不到的。另一个想法是,始终使用 ===
会更清楚,因为它 确实 会导致 similar 操作出现问题,例如 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
我们知道它总是一个字符串,而且它只会是一些预定义值的字符串,所以没有 explicit 使用严格运算符的理由比较 typeof 的结果,但是为了可读性,应该使用严格的比较运算符,并避免 any 该语句的可能异常。
但是
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
编辑
我知道严格比较运算符和松散比较运算符之间的区别。显然 x == y
不同于 x === y
。但是每当我看到使用 typeof
的代码时,它总是使用 ===
.
如果 typeof
运算符的计算结果总是字符串(例如 'boolean'、'number' 等),那么 typeof x == 'y'
和 [=19 就不会=] 总是呈现相同的结果?如果是这样,为什么要使用 ===
?
我知道进行严格比较会更快,但除了在极端情况下,性能提升应该是察觉不到的。另一个想法是,始终使用 ===
会更清楚,因为它 确实 会导致 similar 操作出现问题,例如 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
我们知道它总是一个字符串,而且它只会是一些预定义值的字符串,所以没有 explicit 使用严格运算符的理由比较 typeof 的结果,但是为了可读性,应该使用严格的比较运算符,并避免 any 该语句的可能异常。
但是
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
编辑