当Javascript';或者';|本例中使用的运算符
所以我基本上有这种情况当Javascript';或者';|本例中使用的运算符,javascript,Javascript,所以我基本上有这种情况 var a = someUndefinedVariable.name || ""; 在这种情况下,为什么“a”不等于空字符串??? 这个表达式抛出了一个错误,所以我认为执行只是停止,解释器没有到达带有OR语句的部分。是这样吗? 但是,如果没有属性名称,一切正常。 非常感谢您的关注。您可以先检查someUndefinedVariable,以防止访问未定义变量的属性 var a = someUndefinedVariable && someUndefined
var a = someUndefinedVariable.name || "";
在这种情况下,为什么“a”不等于空字符串???
这个表达式抛出了一个错误,所以我认为执行只是停止,解释器没有到达带有OR语句的部分。是这样吗?
但是,如果没有属性名称,一切正常。
非常感谢您的关注。您可以先检查
someUndefinedVariable
,以防止访问未定义变量的属性
var a = someUndefinedVariable && someUndefinedVariable.name || "";
因为
someUndefinedVariable
,即未定义的,没有属性名称
,所以它会崩溃。替换为:
var a = (someUndefinedVariable && someUndefinedVariable.name) || "";
这个表达式抛出了一个错误,所以我认为执行只是停止,解释器没有到达带有OR语句的部分。是这样吗
对。异常停止执行(除非您捕获它们)
但是,如果没有属性名称,一切正常
如果未声明变量并尝试从中读取,则会出现异常:uncaughtreferenceerror:foo未定义
如果声明了一个变量,并且该变量的值未定义
则可以自由访问该变量。它只是未定义
试图访问未定义的值的属性会引发异常:
未捕获的TypeError:无法读取未定义的属性“bar”
您正在处理案例2和案例3。您应该使用
var a = (someUndefinedVariable && someUndefinedVariable.name) || "";
因为您引用的是一个未定义变量的属性,所以它会崩溃,请检查该变量是否存在。不可压缩的问题。@MarcoSalerno,我理解了。您猜到了,它不同于我理解的。它的措辞并不完美,但文本正确地描述了整个问题。很好的提示!谢谢好小费!谢谢