ES5实现变量的块级作用域

众所周知,ES6新增了let关键字用来定义局部变量,它使得JS的变量有了块级作用域。

块级作用域是指变量只在{}内有效。

那么在ES6以前如何给变量实现块级作用域呢?答案就是使用立即执行匿名函数。

先看看没有块级作用域的情况:

	function a(){
		for(var i=0;i<3;i++){
				
		}	
		console.log(i);
	}
	a();

上述例子中,将输出 i=3,因为i使用var声明,作用域是整个函数。

如果需要让变量i只在for循环中有效呢,我们可以这样实现:

即在for循环外面包裹一层匿名函数,在匿名函数外加圆括号表示立即执行。

function a(){
    (function(){
        for(var i=0;i<3;i++){
            console.log(i);
        }	
    })();

    console.log(i); //输出undefined
}
a();

猜你喜欢

转载自blog.csdn.net/qq_42864422/article/details/106794077