在许多第三方库和最佳实践博客/建议等中,经常会看到这样的语法:
typeof x === 'object' (instead of typeof x == 'object')
typeof y === 'string' (instead of typeof x == 'string')
typeof z === 'function' (instead of typeof x == 'function')
如果typeof运算符已经返回一个字符串,为什么还需要检查返回值的类型呢?如果无论x是什么,typeof(typeof(x))始终是字符串,那么==应该足够了,而===则是不必要的。在什么情况下typeof不会返回字符串字面量?即使存在一些边缘情况,为什么还要对对象、字符串、函数等使用额外的类型检查呢?
===
有什么问题呢? - Skilldrick==
运算符时关于类型强制转换的规则比说“哇,这有点奇怪”并完全避免它要好。 - Tim Down