gpt4 book ai didi

javascript - 为什么下划线的 _.isUndefined(variable) 给出变量未定义的错误?

转载 作者:数据小太阳 更新时间:2023-10-29 03:50:46 27 4
gpt4 key购买 nike

在 Chrome 中,我从这行代码 console.log(_.isUndefined(targetNode)); 得到“Uncaught ReferenceError: targetNode is not defined”。

我在执行 console.log(targetNode === void(0));console.log(targetNode); 时遇到同样的错误。

typeof targetNode === "undefined" 按预期返回 true,但我的理解是 void(0) 比较更有效。

我可以通过为 targetNode 设置默认值来解决这个问题,或者我可以只使用 typeof targetNode === "undefined",但我试图理解为什么如果变量未定义,则对变量是否未定义的测试会阻塞。

最佳答案

当您请求 targetNode 时,它会查找局部变量,然后在后续的父作用域中查找,直到到达链的末尾。如果仍未找到,则有错误。

typeof 的特殊之处在于它的工作方式类似于 try..catch 获取变量,并返回 "undefined"捕获。非 native 代码(例如 isUn​​defined)不能这样做,因为必须解析变量才能将其传递给函数。

但是,如果定义了符号,则可以有效传递。例如:

function test(param) {
console.log(_.isUndefined(param));
}
test("argument");
test(); // undefined argument

或者另一个例子:

function test() {
console.log(_.isUndefined(foo)); // true, no error due to hoisting
var foo = 3;
console.log(_.isUndefined(foo)); // false, foo is defined now.
}

您还可以指定一个明确的来源,例如window.targetNodewindow 已定义,因此脚本知道在哪里查看,但是 targetNode 属性可能未定义,在这种情况下,您会得到 undefined

关于javascript - 为什么下划线的 _.isUndefined(variable) 给出变量未定义的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14590901/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com