闭包
1.基础知识
<!-- 闭包:可以访问其他作用域变量的函数就是闭包 --> <!-- 局部变量 --> <script type="text/javascript"> var num = 100 function fun() { num ++ console.log('局部变量'+num) } fun() //局部变量101 fun() //局部变量102 fun() //局部变量103 //当函数fun第一次调用时候:在函数作用域中没有变量num,因此会沿着作用域链向上(全局)查询 //当函数fun第一次执行的时候,将全局变量num由100变成101 </script> <!-- 双重局部变量 --> <script type="text/javascript"> var num = 100 function aaa(){ var x = 1; function bbb(y){ // parseInt()方法运行相加,不然这里会输出成字符串拼接 console.log('双重局部变量' + parseInt(x + y + num)) } bbb(200) } aaa() //双重局部变量301 // 不管多少层,要是没有找到相对应的变量,会往上层找变量 </script> <!-- 闭包的实用环境 --> <script type="text/javascript"> function aaa(){ var a = 100 function bbb() { a+=10 console.log(a) } return bbb // 返回一个函数 } console.log(aaa) // 返回一个函数 var a1 = aaa() a1() //110 a1() //120 var a2 = aaa() a2() //110 </script>
眼睛如果有等级,那么青色一定最高贵,黑色最深邃