如果未定义变量,如何定义变量?检查似乎很容易,但块部分看起来应该是这样的:
if (typeof PersonalDataForm !== "undefined") {
alert("foo defined!");
} else {
var foo = {};
}
现在,如果我知道我的JS,那个var foo语句将在函数作用域开头的var foo
中与分开,并在块本身内部foo = {}
,因为JS缺少块级范围变量定义。所以它总是未定义的,不是吗?
此代码的运行证明了它(它总是打印“foo undefined”):
var foo = {};
function checkFoo() {
if (typeof foo == "undefined") {
console.log("Foo undefined");
var foo = "default";
} else {
console.log("Foo defined");
}
}
checkFoo();
console.log(foo);
使用它的一个有趣的案例可能是个人“库”的声明,它以:
开头var myOwnLibrary = (function () {
//...code...return object with public methods...blablah
})();
除非已定义,否则会打印错误。
答案 0 :(得分:-1)
我不确定您使用 typeof 运算符的原因。
删除后,它按预期工作。
var foo = {};
function checkFoo(){
if(foo == "undefined"){
console.log("Foo undefined");
var foo = "default";
}else{
console.log("Foo defined");
}
}
checkFoo();
console.log(foo);