【发布时间】:2015-06-12 22:38:08
【问题描述】:
我知道严格比较运算符和松散比较运算符之间的区别。显然x == y 与x === y 不同。但每当我看到使用typeof 的代码时,它总是使用===。
如果typeof 运算符总是计算为字符串(例如'boolean'、'number' 等),那么typeof x == 'y' 和typeof x === 'y' 不会总是呈现相同的结果吗?如果是这样,为什么要使用===?
我知道进行严格比较会更快,但除非在极端情况下,性能提升应该是难以察觉的。另一个想法是始终使用=== 会更清楚,因为它确实会导致类似操作出现问题,例如x == undefined 与x === undefined。是否值得将这些情况减少到 == 以改进压缩和传输编码,还是保留 === 以保持运行时性能和总体清晰度更好?
【问题讨论】:
-
通常最好使用严格比较来避免松散比较的问题。此外,与潜在的脆弱代码相比,额外的
=不算什么。 -
性能提升应该是难以察觉的,但在缩小时也会受到惩罚,所以我会选择最好/最干净的选项,我认为尽可能使用严格的运算符。
-
既然你已经标记了
performance,那么你的答案就是not really。 -
@JosephtheDreamer 这是有道理的。虽然如果
typeof的结果总是相同,并且如果程序员足够聪明,可以知道=、==、===、typeof、null、undefined之间的区别,等等,然后我想知道它到底有多大的问题。无论哪种方式,似乎共识是始终使用===,除非另有需要。 -
如果你正在压缩你的 .js 文件,并且you should be,我打赌一直使用
===会产生比同时使用===和==更小的文件。
标签: javascript performance comparison undefined typeof