文只肤浅说明我对闭包的认识,不涉及其原理。

闭包有以下特性:

  • 函数中的变量在函数执行后仍然存在,可供其他函数使用

  • 一个函数中存在函数就会出现闭包

如下面的例子:将代码保存为closures.html,然后使用浏临览器打开

<script>
	function add(x){
  		return function muli(y){alert(x*y);};
	}
	var add8 = add(8);
</script>
<input type='button' value='test' onClick='add8(100)'/>

我使用Firefox打开,运行结果如下:

当执行完add8 = add(8)后,add(x)函数被执行了,但是参数x=8仍然存在。执行add8(100)时,参数x,也就是8被用来运算。

(完)