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

以下技术应用于最优质的水果的鲜果篮

只有一个全局作用域导致的常见错误是命名冲突。在 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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值