我最近向question询问了功能级别范围与块级别范围之间的区别。答案是全面的,帮助我理解了功能级别范围并引入了提升概念。
现在我有另一个审议。该示例是jQuery .ready()
函数和在其中声明的事件处理程序。也就是说,为什么在.click()
事件处理程序中声明的变量没有被提升到.ready()
函数?这是因为.click()
不是.ready()
函数的属性吗?并且.click()
中声明的变量仅被提升到该函数?
示例:
$(‘document’).ready(function(){
$(‘selector’).click(function(){
var x = 10; //discussed variable
});
});
我正在尝试自己教JS脚本,但这个概念对我来说真的很难理解。有人可以通过一个简单的例子来解释,或提供相关链接。
由于
答案 0 :(得分:4)
.click
事件处理程序是匿名函数,因此任何其他函数都有自己的作用域。在其中声明的变量保持在该范围内。
提升仅适用于函数 - 变量不会泄漏到封闭范围内。如果他们这样做,那么功能范围将毫无用处......