我经常看到JavaScript代码以这种方式检查未定义的参数等:
if (typeof input !== "undefined") {
// do stuff
}
这似乎有点浪费,因为它涉及类型查找和字符串比较,更不用说它的冗长了。这是必需的,因为undefined
可以重命名。
我的问题是:
与该方法相比,该代码有何优势:
if (null != input) {
// do stuff
}
据我所知,您无法重新定义null
,因此不会意外中断。并且,由于!=
运算符的类型强制,这将同时检查undefined
和null
...,而这恰恰是您想要的(例如,用于可选功能参数)。
但是,这种形式似乎并不广泛,它甚至导致JSLint对使用邪恶!=
运算符的人大喊。
为什么认为这种风格不好?
if (null != input)
对讲英语的人来说只是“ Yoda Speak”(我是.... uuammmmm),所以如果他们等同于同一件事,那实际上只是语义。恕我直言。