<span style="font-size:18px;">function outerFn(){ document.write("outer"); var i=0; function innerFn(){ document.write("inner"); i++; document.write(i); } return innerFn; } //要想使用inner()这个内部函数,不可以在outerFn()外部,直接引用</span><span style="font-size:18px;">outerFn()</span><span style="font-size:18px;"> //</span><span style="font-size:18px;">outerFn()</span><span style="font-size:18px;">;是错误的 </span><span style="font-size:18px;"> var innerObj=outerFn(); //将outerFn()返回的函数变量赋给innerObj </span><pre name="code" class="javascript"><span style="font-size:18px;">innerObj();//调用一次内部函数</span><span style="font-size:18px;">outerFn</span><span style="font-size:18px;">() </span><pre name="code" class="javascript"><span style="font-size:18px;">innerObj();</span><span style="font-size:18px;">//第二次调用内部函数</span><span style="font-size:18px;">outerFn</span><span style="font-size:18px;">()</span><span style="font-size:18px;"></span>
最近在研究闭包和作用域链。很多概念还看不到,现在还不是总结的时候。
上面的那个函数式经常被闭包及相关知识解释的例子,之前看不到,后来明白了,赶紧来总结此部分。
innerFn()是outerFn()的内部函数,要执行此内部函数,直接在outerFn()外应用innerFn()是不行的。
以上的例子是通过父函数的返回值来获得内部函数的引用,进而执行内部函数。
时间: 2024-11-13 08:21:00