相关疑难解决方法(0)

JavaScript闭包如何工作?

您如何向知道其所包含概念的人(例如函数,变量等)解释JavaScript闭包,但不了解闭包本身?

我已经看过维基百科上给出的Scheme示例,但遗憾的是它并没有帮助.

javascript variables closures scope function

7644
推荐指数
82
解决办法
139万
查看次数

围绕对象/函数/类声明的括号是什么意思?

我是JavaScript和YUI的新手.在YUI库示例中,您可以找到此构造的许多用法:

(function() {
    var Dom = YAHOO.util.Dom,
    Event = YAHOO.util.Event,
    layout = null,
        ...
})();
Run Code Online (Sandbox Code Playgroud)

我认为最后几个括号是在声明之后执行该函数.

...但是围绕函数声明的前一组括号怎么样?

我认为这是一个范围问题; 这是将内部变量隐藏到外部函数和可能的全局对象中.是吗?更一般地说,这些括号的机制是什么?

javascript syntax

286
推荐指数
6
解决办法
11万
查看次数

使用(函数(窗口,文档,未定义){...})(窗口,文档)赋予什么优势?

我想使用这种模式是新的热点,但我不明白它的优点是什么,我不理解范围的含义.

模式:

(function(window, document, undefined){
  window.MyObject = {
    methodA: function() { ... },
    methodB: function() { ... }
  };
})(window, document)
Run Code Online (Sandbox Code Playgroud)

所以我对此有几个问题.

封装像这样的对象有什么特别的优势吗?
为什么窗口文档被输入而不是正常访问?
为什么undefined要传递这个?
将我们正在创建的对象直接附加到窗口是一个特别好的主意吗?

我已经习惯了我称之为Crockford风格的Javascript封装(因为我把它从Douglas Crockford Javascript视频中删除了).

NameSpace.MyObject = function() {
  // Private methods
  // These methods are available in the closure
  // but are not exposed outside the object we'll be returning.
  var methodA = function() { ... };

  // Public methods
  // We return an object that uses our private …
Run Code Online (Sandbox Code Playgroud)

javascript

59
推荐指数
2
解决办法
4万
查看次数

标签 统计

javascript ×3

closures ×1

function ×1

scope ×1

syntax ×1

variables ×1