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