Javascript通过匿名包装器创建命名空间

来源:互联网 发布:js去掉最后一个逗号 编辑:程序博客网 时间:2024/06/05 19:25
只有一个全局作用域导致的常见错误是命名冲突。在 JavaScript中,这可以通过 匿名包装器 轻松解决。
(function() {
    // 函数创建一个命名空间
    window.foo = function() {
        // 对外公开的函数,创建了闭包
    };
})(); // 立即执行此匿名函数


匿名函数被认为是 表达式;因此为了可调用性,它们首先会被执行。
句法说明:
( // 小括号内的函数首先被执行
function() {}
) // 并且返回函数对象

() // 调用上面的执行结果,也就是函数对象


其实就是我们通常说的自执行匿名函数,以下是自执行匿名函数的一个例子。

for(var i = 0; i < 10; i++) {
    (function(e) {
        setTimeout(function() {
            console.log(e);  
        }, 1000);
    })(i);
}

这个例子中,外部的匿名函数会立即执行。防止以下闭包的问题。

for(var i = 0; i < 10; i++) {
    setTimeout(function() {
        console.log(i);  
    }, 1000);
}

上面的代码不会输出数字 0 到 9,而是会输出数字 10 十次。
当 console.log 被调用的时候,匿名函数保持对外部变量 i 的引用,此时 for循环已经结束, i 的值被修改成了 10.


原文:http://blog.csdn.net/atec2000/article/details/7630023

阅读全文
0 0
原创粉丝点击