本来函数内部的变量,函数外面是不能执行的,但是这里在函数内部又定义了一个函数,并且函数内部的函数用到了外部函数的变量 内部函数被移到外部来执行(用一个变量来接收这个内部函数本身)
<script>
// 定义一个函数
function fun() {
// 定义一个变量
var name = "JavaScript";
// 函数里面又定义了一个函数
function innerFun() {
// 内部函数可以用外部函数定义的变量,内部函数用到了外部函数定义的变量
alert(name);/* 执行内部函数会输出这个变量 */
}
// 在外部函数返回内部函数的函数本身,这里不是返回值
return innerFun;
}
// 用一个变量接收了外部函数的返回值,外部函数的返回值是内部函数本身
var inn = fun();
// 执行了外部函数的返回值,也就是执行了内部函数
inn();/* 所以最终结果,就是输出内部函数的输出结果 */
</script>