【问题标题】:JavaScript called function and scopeJavaScript 调用函数和作用域
【发布时间】:2014-02-16 18:21:33
【问题描述】:

我最近向question 询问了函数级范围块级范围之间的区别。答案很全面,帮助我理解了功能级范围,并介绍了吊装的概念。

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

例子:

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

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

谢谢

【问题讨论】:

  • 仅供参考,使用 $(document) 而不是 $(‘document’)

标签: javascript jquery function events scope


【解决方案1】:

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

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

【讨论】:

  • 好的,我想我明白了,我对 loop 块或 if 语句块感到困惑,它被用作上述问题中的一个例子。谢谢。
  • @Dimt 是的,不幸的是,您在另一个问题的已接受答案上被其中一个 cmets 误导了 - 在内部函数中声明的变量在封闭函数中是 not 可访问的.
  • 但是答案很好,只是我误解了它。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 2011-11-22
  • 2015-08-22
  • 2013-05-30
  • 2011-12-15
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多