<body> <!-- 1。如何产生闭包? *当一个嵌套的内部(子)函数引用嵌套的外部(父)函数的变量(函数)时,就产生了闭包 2.闭包到底是什么? 使用chrome调试查看 理解一:闭包是嵌套的内部函数(绝大部分人) 理解二:包含被引用变量(函数)的对象(极少数人) 注意:闭包存在于嵌套的内部函数中 3.产生闭包的条件? 函数嵌套 内部函数引用了外部函数的数据(变量/函数) --> <script> function fn1(){ var a =2 var b = '22'//闭包里面没有b 如果是var fn = function(){ //这样就不产生闭包 console.log(a) } function fn2(){ //执行函数定义才能产生闭包,也就是一定要执行外部函数,执行了函数定义才会产生变量,不一定要执行内部函数(fn2) console.log(a) //闭包里面有a } fn2() } fn1() </script> </body>
执行函数定义才能产生闭包,也就是一定要执行外部函数,执行了函数定义才会产生变量,不一定要执行内部函数(fn2)