<script> // 1 . 在函数内部访问全局变量 var num = 11; function func1(){ // 在函数内部可以得到全局变量的值 console.log(num); } func1(); // 2 . 在函数外部得到函数内部的值 function func2(){ // num1 是局部变量 var num1 = 22; num2 = 33; } func2(); // 在函数外部得不到函数内部的值 // console.log(num1); // 由于定义num2时没有用var关键字,它被认为是全局变量 console.log(num2); // // 3 . 如果从外部得到内部的值 // 在外部无法获取到 func3 内部的变量,但是func3内部的方法func4()可以获取到 // 这样在外部通过 func4 可以获取到func3的内部变量 // 虽然饶了一个圈子 // 而 func3 内部的方法 func4 就叫做闭包。这个方法搭建了方法内部与方法外部的一个桥梁 function func3(){ var num3 = 44; function func4(){ // 返回num3 return num3; } // 把fubc4 的结果返回 return func4; } var func = func3(); console.log(func()); </script>
什么是闭包:
一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
闭包的特性:
1. 一个函数变量的一个引用,当函数返回时(return),处于激活状态
2. 一个闭包就是当函数返回时,一个没有释放资源的栈区
也就是说javaScript可以使用内部函数---函数定义和函数表达式位于另一个函数的函数体内。
而且,这些函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部
函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。
来自网络
2016年8月1日