以下技术应用于最优质的水果的鲜果篮
(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.
本文探讨了JavaScript中闭包的使用方式及匿名函数的作用,特别是如何通过自执行匿名函数来避免全局作用域中的命名冲突问题,并提供了一个具体的示例。
125

被折叠的 条评论
为什么被折叠?



