gpt4 book ai didi

javascript - 函数调用上下文

转载 作者:行者123 更新时间:2023-12-02 16:28:53 25 4
gpt4 key购买 nike

我认为下面的 JavaScript 会导致obj.fnentryPoint() 的上下文中运行。

但是当obj.fn()运行时,会引发'locVar is undefined'异常。

  function entryPoint () {
var locVar = "xxx";
var obj = {};

PassRcvr(obj);

obj.fn();

}

function PassRcvr(passedObj) { // Being an object, the arg is passed by reference.
passedObj.fn = function () {
alert(locVar);
}
}

但是,下面的 JScript 确实在感知locVar 的情况下运行。

  function entryPoint () {
var locVar = "xxx";
var obj = {};

PassRcvr(obj);

obj.fn();

function PassRcvr(passedObj) {
passedObj.fn = function () {
alert(locVar);
}
}

}

为什么在这两种情况下,而不仅仅是其中一种情况下,obj.fn()不知道调用它的上下文?

最佳答案

上下文this的值。您没有使用它,因此它与您的问题无关。

范围未通过。函数保留其声明的作用域(这就是我们可以在 JS 中使用闭包的原因)。由于第一个示例中 PassRcvr 未在 entryPoint 内定义,因此它无法访问作用域为 entryPoint 的变量。

关于javascript - 函数调用上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28482792/

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