typeof!==“未定义”与!= null

我经常看到这样检查未定义参数的JavaScript代码:

if (typeof input !== "undefined") {
    // do stuff
}

这看起来很浪费,因为它涉及类型查询和字符串比较,更不用说它的详细程度了。 这是必要的,因为'未定义'可以重新命名。 我的问题是:该代码如何比这种方法更好:

if (null != input) {
    // do stuff
}

据我所知,你不能重新定义null,所以它不会意外中断。 而且,由于!=运算符的类型强制,这会检查undefined和null ...这通常正是您想要的(例如,对于可选的函数参数)。 然而,这种形式似乎并不普遍,甚至会导致JSLint使用邪恶!=运算符来大吼你。 为什么这被认为是不好的风格?


typeof允许标识符从来没有被声明过。 所以在这方面更安全:

if(typeof neverDeclared == "undefined") //no errors

if(neverDeclared == null) //throws ReferenceError: neverDeclared is not defined

如果声明了变量(无论是var关键字,函数参数还是全局变量),我认为最好的方法是:

if (my_variable === undefined)

jQuery做到了,所以这对我来说足够了:-)

否则,你将不得不使用typeof来避免ReferenceError

如果你期望undefined被重新定义,你可以像这样包装你的代码:

(function(undefined){
    // undefined is now what it's supposed to be
})();

好办法:

if(typeof neverDeclared == "undefined") //no errors

但最好看的方法是通过以下方式进行检查:

if(typeof neverDeclared === typeof undefined) //also no errors and no strings
链接地址: http://www.djcxy.com/p/55865.html

上一篇: typeof !== "undefined" vs. != null

下一篇: Playing Spotify music and audio simultaneously