JavaScript 短路仍然引发未定义的错误
JavaScript Short-Circuit Still Throws Undefined Error
我正在使用 AngularJs 中的一些旧代码。有一个变量 someVar1
可能存在于 JS 以太中,如果它存在,我想像这样将它附加到我的范围:
$scope.someVar2 = someVar1 || 0;
但偶尔,当以太中不存在 someVar1
时,我会收到此错误:
错误:未定义 someVar1
直接指向JS文件中someVar1
的行和列。
为什么会这样?我的印象是 someVar1 || 0
会检查 someVar1
是否未定义,这是错误的,并将 $scope.someVar2
设置为 0。
要使 someVar1
成为潜在的 undefined
,必须首先声明此变量。
在您的情况下,负责定义 someVar1
的代码可能在此脚本之后被调用(或者可能永远不会)。
我建议首先检查一下。
作为 hack,您可以使用 typeof
.
检查变量是否由您自己定义
如果变量未定义,typeof
不会抛出 ReferenceError
,但如果变量未定义或具有 undefined
值,则会回复 undefined
。
例如,您的代码可以如下所示:
$scope.someVar2 = typeof(someVar1) !== "undefined" ? someVar1 : 0;
参考:https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Erreurs/Not_defined
我正在使用 AngularJs 中的一些旧代码。有一个变量 someVar1
可能存在于 JS 以太中,如果它存在,我想像这样将它附加到我的范围:
$scope.someVar2 = someVar1 || 0;
但偶尔,当以太中不存在 someVar1
时,我会收到此错误:
错误:未定义 someVar1
直接指向JS文件中someVar1
的行和列。
为什么会这样?我的印象是 someVar1 || 0
会检查 someVar1
是否未定义,这是错误的,并将 $scope.someVar2
设置为 0。
要使 someVar1
成为潜在的 undefined
,必须首先声明此变量。
在您的情况下,负责定义 someVar1
的代码可能在此脚本之后被调用(或者可能永远不会)。
我建议首先检查一下。
作为 hack,您可以使用 typeof
.
typeof
不会抛出 ReferenceError
,但如果变量未定义或具有 undefined
值,则会回复 undefined
。
例如,您的代码可以如下所示:
$scope.someVar2 = typeof(someVar1) !== "undefined" ? someVar1 : 0;
参考:https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Erreurs/Not_defined