Javascript变量,定义是否未定义

时间:2016-05-30 11:21:36

标签: javascript

如果未定义变量,如何定义变量?检查似乎很容易,但块部分看起来应该是这样的:

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

除非已定义,否则会打印错误。

1 个答案:

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