Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当Javascript';或者';|本例中使用的运算符_Javascript - Fatal编程技术网

当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,我理解了。您猜到了,它不同于我理解的。它的措辞并不完美,但文本正确地描述了整个问题。很好的提示!谢谢好小费!谢谢