【发布时间】:2015-07-11 19:25:18
【问题描述】:
此 JavaScript 代码用于 Google Chrome 扩展程序。
它有效,但我想知道一件事。它在 for 循环中迭代关联数组并在 Chrome 函数中利用其值。
这很好用:
var links =
{
apps: 'chrome://apps/',
bookmarks: 'chrome://bookmarks/',
history: 'chrome://history',
...
};
for (var link in links)
{
(function()
{
var href = links[link];
document.querySelector('#' + link).addEventListener('click', function() { chrome.tabs.create({ url: href }); });
})();
}
但是随着一些变化它突然不(变化被突出显示)
var href = links[link];看-----v [...].addEventListener('click', function() { chrome.tabs.create({ url: links[link] }); });
我也必须使用(function() { })();模式(我不知道名字),否则它也不起作用。
问题
为什么这仅在同时使用模式和变量复制时才有效?请向我解释 JavaScript 如何以需要这些装置的方式处理变量。
【问题讨论】:
标签: javascript variables for-loop