【发布时间】:2020-09-15 18:59:52
【问题描述】:
我正在使用 AngularJs 中的一些旧代码。 JS ether 中可能存在一个变量 someVar1,如果存在,我想像这样将它附加到我的范围:
$scope.someVar2 = someVar1 || 0;
但偶尔,当someVar1 在以太中不存在时,我会收到此错误:
错误:未定义 someVar1
它直接指向JS文件中someVar1的行和列。
为什么会这样?我的印象是someVar1 || 0 会检查someVar1 是否未定义,这是假的,并将$scope.someVar2 设置为0。
【问题讨论】:
-
不幸的是,我不能。主要是因为 someVar1 在另一个文件中,我相信有时该文件甚至没有加载,这就是它未定义的原因。问题主要是,为什么短路没有捕捉到未定义?
-
@palaѕн 我能够模拟这个并添加了 gpouilloux 的修复。 jsfiddle.net/ScubaShneve/o6cL4asg
-
好的,如果您想查看它,我还将一个问题链接为重复。
-
非常接近,特别是因为这个问题的答案是您链接的问题的答案之一。我看到的不同之处在于,我在问更多为什么短路没有捕捉到它,因为 undefined 是假的。我的问题的答案解释说,引用变量会引发错误,而不是在短路中检查未定义。
标签: javascript undefined short-circuit-evaluation