我经常看到 JavaScript 代码以这种方式检查未定义的参数等:
if (typeof input !== "undefined") { // do stuff }
这似乎有点浪费,因为它涉及类型查找和字符串比较,更不用说它的冗长了。不过,它是必需的,因为undefined可以重命名。
undefined
我的问题是: 该代码如何比这种方法更好:
if (null != input) { // do stuff }
据我所知,您无法重新定义null,因此它不会意外中断。而且,由于!=操作符的类型强制,这会检查undefined和null… 这通常正是您想要的(例如,对于可选的函数参数)。
null
!=
然而这种形式似乎并不普遍,它甚至会导致 JSLint 对你大喊大叫,因为你使用了 evil!=运算符。
为什么这被认为是不好的风格?
typeof更安全,因为它允许标识符以前从未被声明过:
typeof
if(typeof neverDeclared === "undefined") // no errors if(neverDeclared === null) // throws ReferenceError: neverDeclared is not defined