当前位置:  开发笔记 > 编程语言 > 正文

JavaScript习惯用法:仅创建一个函数来调用它

如何解决《JavaScript习惯用法:仅创建一个函数来调用它》经验,为你挑选了1个好方法。

我正在学习YUI并偶尔看到这个成语:

 

为什么他们只是为了调用它而创建一个函数?为什么不写:


例如,请看这里.



1> Dan Lew..:

他们正在利用封闭装置.

简短说明:由于JS使用函数级作用域,因此您可以在函数中执行一系列操作并使其保留在该范围内.这对于调用不会破坏全局命名空间的代码很有用.它还允许一个人创建私有变量 - 如果你在匿名函数中声明一个变量并立即执行它,那么只有匿名函数内的其他代码才能访问该变量.

例如,假设我想创建一个全局唯一的id生成器.有人可能会做这样的代码:

var counter = 0;
var genId = function()
{
    counter = counter + 1;
    return counter;
}

但是,现在任何人都可以搞乱计数器,我现在用两个变量(countergenId)污染了全局命名空间.

相反,我可以使用匿名函数来生成我的计数器函数:

var genId = function()
{
    var counter = 0;
    var genIdImpl = function()
    {
        counter = counter + 1;
        return counter;
    }

    return genIdImpl;
}();

现在,我在全局命名空间中只有一个变量,这是有利的.更重要的是,计数器变量现在不会被修改 - 它只存在于匿名函数的范围内,因此只有函数genIdImpl(在同一范围内定义)才能访问它.

看起来在YUI的示例代码中,他们只想执行根本不污染全局命名空间的代码.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有