javascrip cnblogs () 避免 发的 立即执行 使用 内部
1. 块级作用域
- /*
- 这里是全局环境
- */
- //立即执行函数
- (function() {
- //这里是块级作用域,外部无法读取function内部的变量,除非将变量赋给window
- var a = ‘hello‘;
- var b = ‘world‘;
- alert(a); //可以打印a
- window.b = b; //将b赋给全局
- })();
- alert(a); //无法打印a
- alert(b); //可以打印b
我们一般在写插件的时候,将代码封装在一个立即执行函数里,一般只将一个对象赋给全局供外部使用,这样就避免了插件内部变量污染全局变量。
在多人协作开发的项目中要尽可能少的使用全局变量和函数,否则很可能导致命名冲突。而将各自的代码封装在各自的作用域中,则互不干扰。
- //程序员A的代码
- (function() {
- $(function() {
- var a = ‘hello‘;
- alert(a);
- });
- })();
- //程序员B的代码
- (function() {
- $(function() {
- var a = ‘world‘;
- alert(a);
- });
- })();
- //都得以执行
在全局作用域中使用块级作用域可以减少闭包占用的内存问题,因为没有指向匿名函数的引用。只要函数执行完毕,就可以立即销毁其作用域链了。
JavaScript - 匿名函数和闭包
来源: http://www.bubuko.com/infodetail-2314750.html