所以,我一直使用构造类型来测试变量的存在:
if(foo){
doThings();
}
现在,我得到一个
Uncaught ReferenceError: foo is undefined
这是一个小提琴
事实上,甚至从未声明过 var。我的问题是,这是正常行为吗?我已经用过很多次了,我认为这不是第一次没有声明变量;我几乎可以肯定我从来没有遇到过这个问题,它只是返回 false 并且没有进入状态。
欢迎任何帮助和澄清。
所以,我一直使用构造类型来测试变量的存在:
if(foo){
doThings();
}
现在,我得到一个
Uncaught ReferenceError: foo is undefined
这是一个小提琴
事实上,甚至从未声明过 var。我的问题是,这是正常行为吗?我已经用过很多次了,我认为这不是第一次没有声明变量;我几乎可以肯定我从来没有遇到过这个问题,它只是返回 false 并且没有进入状态。
欢迎任何帮助和澄清。
如果尚未声明变量,则尝试引用它将导致引用错误。
如果一个变量已被声明但未赋值,那么它将隐含地具有该值undefined
,并且您的代码将按预期工作。
在您的情况下,会发生以下情况:
if
语句[if( Expression ) Statement ]
undefined
),则抛出引用错误确定引用值的算法遍历嵌套的词汇环境链,直到到达最外层的上下文。当它到达那个点并且仍然没有找到提供的标识符的绑定时,它返回一个其基值为 的引用undefined
。
当引用的基值是该引用时,undefined
该引用被称为“不可解析”,并且当引用不可解析时,任何引用它的尝试都将导致(不出所料)引用错误。
check the updated fiddle. If you haven't declare a variable then in condition u will have to check its type.
var a = 1;
var b;
try{
if(typeof(c)!='undefined') {
alert("OK");
}
} catch(ex){
alert(ex);
}
var
是 Javascript 中的保留关键字。
以下是对应的错误
Uncaught SyntaxError: Unexpected token var