English 中文(简体)
功能保留参数[重复]
原标题:Functions retaining parameters [duplicate]

在接下来的片段中,调用函数为什么和如何形成一个全新的执行环境,保留了 > i 的价值?

function getHandler(n) {
    return function() {
        alert(  You clicked on:   + n );
    };
}
 
for (var i = 0; i < 100; ++i) {
    myElements[i].onclick = getHandler(i);
}
最佳回答

s 是由 JavaScript 关闭和 JavaScript 循环中宣布的变量行为引起的。由于参数 n adHandler s 关闭的一部分, n 保持了该参数对于自己内部宣布的函数实例的价值。 恰好如此, 您从全球空间的循环中通过 i 。

如果您想在 addHandler 内对递增 n 做点什么, 你会看到它实际上不会影响 i 。 再一次,这是因为关闭, n addHandler s 关闭内存在, 并且只是被 i 所覆盖。

行为

由于关闭, n 无论在 addHandler (此处存在某些函数引用) 中创建什么, 都存在 n

我希望这说得通 我想很难解释

EDIT: 及其运作方式。

问题回答

暂无回答




相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.