【Javascript】闭包之块级作用域

2023-10-07 16:48:56 浏览数 (2)

在js中我们应该尽量避免使用全局变量和全局函数,以防止发生命名冲突,那么要如何避免呢?js中有一个闭包的概念,现在我们使用闭包中块级作用域来讲解,这也是闭包中最重要的概念。

js本身是不支持像C/C#/java…这样的语言中有块级作用域的,即在语法块中定义的变量,在语法块外面是无法访问到的。

那么,js要怎么去模拟像C这样的块级作用域呢?我们先来看一个栗子:

例如:

代码语言:javascript复制
 test();
 function test() {
	(function(){
		for(var i=0;i<3;i  ){
			console.log(i);//这个时候i就在**匿名函数里**面有效了,在**匿名函数外**无效,在匿名函数外,i就被销毁了
		}
	})();	
	console.log(i);//输出:undefined
}

在函数内部创建一个匿名函数,就相当于在函数内部创建了一个私有作用域,这对于在较大/多人开发的项目中是很好用的,这样每个程序员能在自己的功能函数中使用自己的变量不至于混乱、冲突。

0 人点赞