在JS中,如果定义了变量,我想做点什么。我的印象是这种语法可行:
if (foo) {
console.log('foo is defined');
} else {
console.log('foo is not defined');
}
但是我得到了一个"未捕获的参考错误:未定义foo":
我错过了什么吗?我认为这是非常基本的js并且之前使用过这种语法。
答案 0 :(得分:2)
答案 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');
}