Javascript变量,如果未定义,请定义
如何定义未定义的变量?检查似乎很简单,但块部分应该如下所示:Javascript变量,如果未定义,请定义,javascript,Javascript,如何定义未定义的变量?检查似乎很简单,但块部分应该如下所示: if (typeof PersonalDataForm !== "undefined") { alert("foo defined!"); } else { var foo = {}; } 现在,如果我知道我的JS,var foo语句将在函数作用域开头的var foo和块本身内部的foo={}中分开,因为JS缺少块级作用域变量定义。所以它总是没有定义的,不是吗 这段代码的运行证明了这一点(它总是打印“foo unde
if (typeof PersonalDataForm !== "undefined") {
alert("foo defined!");
} else {
var foo = {};
}
现在,如果我知道我的JS,var foo语句将在函数作用域开头的var foo
和块本身内部的foo={}
中分开,因为JS缺少块级作用域变量定义。所以它总是没有定义的,不是吗
这段代码的运行证明了这一点(它总是打印“foo undefined”):
使用此功能的一个有趣案例可能是个人“库”的声明,该声明从以下内容开始:
var myOwnLibrary = (function () {
//...code...return object with public methods...blablah
})();
除非已经定义了,否则在这种情况下它会打印一个错误。我不知道为什么要使用typeof操作符 卸下后,它将按预期工作
var foo = {};
function checkFoo(){
if(foo == "undefined"){
console.log("Foo undefined");
var foo = "default";
}else{
console.log("Foo defined");
}
}
checkFoo();
console.log(foo);
foo=foo | |“default”
?@kyll如果foo的值是假的呢?啊,对<代码>foo=foo的类型!='未定义的'?foo:“默认值”。但是读起来很无聊。当然,如果foo
的值是undefined
,它就会失败。最后一种方法可能是尝试使用foo
,看看是否抛出了ReferenceError
。@kyll不会这样做,直接创建一个函数作用域foo
变量吗?因为{}!==“undefined”
,但如果删除var foo={}代码>行,它仍然打印“foo defined”,因为foo
未定义,并且不等于字符串“undefined”
var foo = {};
function checkFoo(){
if(foo == "undefined"){
console.log("Foo undefined");
var foo = "default";
}else{
console.log("Foo defined");
}
}
checkFoo();
console.log(foo);