2010-10-12 52 views
0

我在JavaScript上下文中有一个问题。我对这个问题有点困惑。下面的代码说明我的问题:事件处理程序访问上下文JavaScript

$(..).someFunction{ 
    var outOfScope = "OUT OF SCOPE!"; 

    $('somelink').click(handler); 

    function handler() { 
    alert(outOfScope); 
    } 
} 

我的问题是:如何outOfScope变量(这是处理程序之外定义)是处理器中见过?

+0

请参阅Jibbering的[Javascript关闭](http://jibbering.com/faq/notes/closures/)常见问题解答。 – outis 2011-03-05 21:13:38

回答

4

变量outOfScope的作用域为someFunction,所以它在内部可用someFunction

功能handler里面的someFunction,所以变量outOfScope仍然可用。

0

这就是JavaScript的工作原理。

所有在范围内直接定义的变量也将在范围内定义的所有范围中可用。

+0

不完全正确。范围内的范围内的变量不可用于外部范围或其他内部范围。只是要挑剔;)也许你可以把“直接放在范围内”。 – sje397 2010-10-12 15:40:55

+0

谢谢,修正:) – 2010-10-12 15:51:04