3 回答
TA贡献1876条经验 获得超7个赞
typeof 更安全,因为它允许标识符永远不会被声明:
if(typeof neverDeclared === "undefined") // no errors
if(neverDeclared === null) // throws ReferenceError: neverDeclared is not defined
TA贡献1851条经验 获得超5个赞
如果声明变量(使用var关键字,作为函数参数或作为全局变量),我认为最好的方法是:
if (my_variable === undefined)
jQuery做到了,所以它对我来说足够好了:-)
否则,你将不得不使用typeof以避免ReferenceError。
如果您希望重新定义undefined,可以像这样包装代码:
(function(undefined){
// undefined is now what it's supposed to be
})();
TA贡献1735条经验 获得超5个赞
您不应该真的担心未定义的重命名。如果某人重命名未定义,那么如果检查失败,您将遇到的问题远不止一些。如果你真的想要保护你的代码,请将它包装在IFFE(立即调用的函数表达式)中,如下所示:
(function($, Backbone, _, undefined) {
//undefined is undefined here.
})(jQuery, Backbone, _);
如果您正在使用浏览器环境中的全局变量(这已经是错误的),我会检查未定义如下:
if(window.neverDefined === undefined) {
//Code works
}
由于全局变量是窗口对象的一部分,因此您只需检查undefined而不是转换为字符串并比较字符串。
最重要的是,为什么你的变量没有定义?我看过很多代码,他们检查变量是否存在,并根据它执行一些操作。我没有看到这种方法在哪里是正确的。
添加回答
举报