JavaScript短路仍然会抛出未定义错误。

8 浏览
0 Comments

JavaScript短路仍然会抛出未定义错误。

我正在使用AngularJs中的一些旧代码。存在一个变量someVar1,它可能存在于JS ether中,如果存在,我想将其附加到我的作用域中,如下所示:

$scope.someVar2 = someVar1 || 0;

但是偶尔,当someVar1在ether中不存在时,我会遇到以下错误:

错误:someVar1未定义

它直接指向JS文件中someVar1的行和列。

为什么会发生这种情况?我原以为someVar1 || 0会检查someVar1是否未定义,即假值,并将$scope.someVar2设置为0。

0
0 Comments

JavaScript短路仍然会引发未定义错误的原因是因为变量`someVar1`可能未声明。在这种情况下,可能是在这个脚本之后(或者可能从未)定义`someVar1`的代码被调用。建议首先检查这一点。作为一种解决方法,可以使用`typeof`来检查变量是否已定义。如果变量未定义或具有`undefined`值,`typeof`不会抛出`ReferenceError`,而是返回`undefined`。例如,代码可以如下所示:

$scope.someVar2 = typeof(someVar1) !== "undefined" ? someVar1 : 0;

参考:[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Not_defined](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Not_defined)

你可以在你的答案中添加`typeof(someVar1) === "undefined"`,我会接受它。

0