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);