您的位置:首页 > Web前端 > JavaScript

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

2017-08-17 14:56 218 查看
只有一个全局作用域导致的常见错误是命名冲突。在 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: