gpt4 book ai didi

JavaScript:回调访问另一个参数

转载 作者:行者123 更新时间:2023-12-03 02:01:49 24 4
gpt4 key购买 nike

this example看来回调正在访问另一个参数(无需再次提供参数)。

摘自上面的链接

var SimplePropertyRetriever = {
getPrototypeEnumerables: function(obj) {
return this._getPropertyNames(obj, false, true, this._enumerable);
},

_enumerable: function(obj, prop) {
return obj.propertyIsEnumerable(prop);
},

_getPropertyNames: function getAllPropertyNames(obj, iterateSelfBool, iteratePrototypeBool, includePropCb) {
...
}
}

如图所示:

  • this._enumerable 传递给 _getPropertyNames
  • _enumerable 接受名为 obj 的参数
  • 不过
  • obj 并未显式传递,因此当回调传递给 _getPropertyNames 时,它似乎以某种方式访问​​其第一个参数,即 obj

为了测试它,我尝试了以下方法,但没有成功。

function myFunc2(para, callback) {
console.log(`Para: ${para}`);
callback();
}
myFunc2(42, (para) => console.log(para));

知道我在这里缺少什么吗?

最佳答案

我建议您了解 JavaScript 中的闭包变量作用域

对于您上面提到的代码片段,由于您的回调需要一个参数“para”,您可以传递它并记录它。如果您不想传递它,您可以将其添加到全局对象(如果是浏览器,则为“window”对象)。

这是因为您的匿名回调函数首先在其自己的主体中期望“para”变量,接下来它将尝试在其父级主体中搜索,在本例中是全局对象。

对于下面的示例,

function myFunc2(para, callback) {
window.para = para;
console.log(`Para: ${para}`);
callback();
}
myFunc2(42, () => console.log(para));

关于JavaScript:回调访问另一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49978049/

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