如果定义了变量,请执行某些操作

时间:2014-07-10 21:31:13

标签: javascript

在JS中,如果定义了变量,我想做点什么。我的印象是这种语法可行:

if (foo) {
    console.log('foo is defined');
} else {
    console.log('foo is not defined');       
}

但是我得到了一个"未捕获的参考错误:未定义foo":

http://jsfiddle.net/cfUss/

我错过了什么吗?我认为这是非常基本的js并且之前使用过这种语法。

3 个答案:

答案 0 :(得分:2)

检查其type

if (typeof(foo) != 'undefined')

您的检查仅在声明变量且falsey时有效,但您需要知道对象是否已定义

答案 1 :(得分:1)

有两个相关概念,即声明和定义。尝试引用未声明的名称会引发错误,而不是尝试引用未定义的值。

例如:

var foo; //Declare the variable. It's still not defined however
if (foo) {
    console.log('foo is defined');
} else {
    console.log('foo is not defined');       
}

当然,如果我真的想要检测一些你想要提及的未声明或未定义的内容,我通常更愿意更明确地使用if(typeof foo != "undefined"),因为var foo; if (foo)没有。 t触发已定义但可疑的值。最后,如果要测试某些内容是否未定义并允许它在未声明的情况下抛出,则可以直接比较未定义的值,例如: if(foo !== void(0))

答案 2 :(得分:0)

if (typeof foo == "undefined") {
     console.log('doesnt exist');  
} else {
     console.log('it exists');   
}

http://jsfiddle.net/cfUss/2/