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
(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
相关文章推荐
- Javascript通过匿名包装器创建命名空间
- JavaScript创建命名空间、类及类成员
- JavaScript创建命名空间(namespace)的最简实现
- 错误:"无法从命名空间绑定的导入"错误消息出现,当您试图通过使用 Web 服务描述语言工具创建 XML Web 服务代理文件时
- JavaScript中创建命名空间的几种写法(推荐)
- Flex中如何通过创建新的XML命名空间(namespace),在MXML中使用flash.filters类
- 在JavaScript中创建命名空间的几种写法
- JavaScript创建命名空间
- 利用MS AJAX注册Javascript命名空间并创建类
- JavaScript 匿名函数、模块模式、闭包、命名空间、创建构造器(类)、继承
- 在JavaScript中创建命名空间的几种写法
- JavaScript 匿名函数、模块模式、闭包、命名空间、创建构造器(类)、继承
- javascript的对象创建模式---命名空间模式
- JavaScript创建命名空间的5种写法
- 在JavaScript中创建命名空间的几种写法
- 在JavaScript中创建命名空间的几种写法
- 【JavaScript】创建命名空间,Class,LOG
- JavaScript创建命名空间(namespace)的最简实现
- 在JavaScript中创建命名空间的几种写法
- 利用MS AJAX注册Javascript命名空间并创建类