这是在 JavaScript 中形成闭包的正确方法吗? [关闭]

Posted

技术标签:

【中文标题】这是在 JavaScript 中形成闭包的正确方法吗? [关闭]【英文标题】:Is this the correct way to form a closure in JavaScript? [closed] 【发布时间】:2012-08-23 07:07:48 【问题描述】:

iD 是一个在循环中每次迭代都会改变的对象。同样在这个循环中,我运行以下命令:

$("td.item_holder > div").append(dynamo.shop.box.ini(item_info,(function(data)
    return function()
        console.log(data);
    
)(iD)));

我希望这会形成一个闭包。我唯一的疑问是,它调用的函数 dynamo.shop.box.ini 使用 .bind (jQuery) 如下:

ini : function(data,callback)
....
            var right = $('<div>').addClass("dynamo_right").html('bye').bind('click',callback);
....
    return container;
,

我是否需要在 .bind 调用上使用另一个匿名函数来保持关闭?

【问题讨论】:

*** 上有很多关于闭包的问题。随便搜一下:***.com/search?q=%5Bjavascript%5D+closure 【参考方案1】:

不,ini 本身就是一个函数,因此有自己的作用域。因此,每次调用时传递给ini 的参数不会改变,也不需要另一个闭包。

【讨论】:

以上是关于这是在 JavaScript 中形成闭包的正确方法吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript闭包的用法和场景

javascript 闭包

JavaScript 回调函数属于闭包?

我从来不理解JavaScript闭包,直到有人这样向我解释它...

javascript闭包的基础理解

译理解JavaScript闭包——新手指南