gpt4 book ai didi

Javascript:将自定义参数传递给回调函数

转载 作者:数据小太阳 更新时间:2023-10-29 04:56:42 25 4
gpt4 key购买 nike

我有这个回调函数设置:

var contextMenu = [];
var context = [ { "name": "name1", "url": "url1" }, {"name": name2", "url: "url2" } ];
for(var i=0; i < context.length; i++) {
var c = context[i];
var arr = {};
arr[c.name] = function() { callback(c.url); }
contextMenu.push( arr );
}
function callback(url) {
alert(url);
}

问题在于传递给回调的 url 值始终是上下文变量中的最后一个值 - 在本例中为“url2”。我期望将特定值传递给回调的每个“实例”,但由于回调似乎记住了相同的值,即上次引用它的时间。

我有点卡住了。任何帮助将不胜感激。

PS:我用的是jQuery ContextMenu据我了解,它不支持将自定义数据发送到其回调函数。正是在这种情况下,我遇到了这个问题。在此环境中克服的任何建议也很有帮助!

最佳答案

使用额外的闭包。

arr[c.name] = (function(url) { 
return function() { callback(url); }
})(c.url);

参见 Creating closures in loops: A common mistake和大多数其他questions关于这个主题,现在你的问题也被添加到这个池中。

关于Javascript:将自定义参数传递给回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5144374/

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