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