JavaScript称为函数和范围

时间:2014-02-16 18:21:34

标签: javascript jquery function events scope

我最近向question询问了功能级别范围块级别范围之间的区别。答案是全面的,帮助我理解了功能级别范围并引入了提升概念。

现在我有另一个审议。该示例是jQuery .ready()函数和在其中声明的事件处理程序。也就是说,为什么在.click()事件处理程序中声明的变量没有被提升到.ready()函数?这是因为.click()不是.ready()函数的属性吗?并且.click()中声明的变量仅被提升到该函数?

示例:

$(‘document’).ready(function(){
    $(‘selector’).click(function(){
        var x = 10; //discussed variable
    });
});

我正在尝试自己教JS脚本,但这个概念对我来说真的很难理解。有人可以通过一个简单的例子来解释,或提供相关链接。

由于

1 个答案:

答案 0 :(得分:4)

.click事件处理程序是匿名函数,因此任何其他函数都有自己的作用域。在其中声明的变量保持在该范围内。

提升仅适用于函数 - 变量不会泄漏到封闭范围内。如果他们这样做,那么功能范围将毫无用处......