跳至主要內容

闭包

chanchaw小于 1 分钟javascript

概述

var 声明变量是全局可见并且可以重复声明,ES6 之后通过 let , const 解决该问题,在 ES6 之前通过闭包可解决 var 作用域问题。
闭包的写法见备注,在其中通过 var 声明的变量在外部不可见,不可访问,ES6 之前通过该方法解决变量作用域问题,下面是闭包的写法:

(function(){
	// do something
})();

在闭包内可以访问外面的变量 name,但是在代码尾部 - 闭包之后,不可访问闭包内定义的变量 age,见下面代码:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>演示var作用域与闭包</title>
</head>
<body>

</body>
<script type="text/javascript">
	var name = 'chanchaw';
	if(true){
		(function(){// 闭包的写法
			var age = 10;
			console.log(`下面是闭包内的打印内容:`);
			console.log(name);
			console.log(age);
		})();
	}

	console.log(`下面是闭包之后的打印:`);
	console.log(name);
	console.log(age);
</script>
</html>