在外部调用函数内部的函数是行不通的。因为每执行环境通过作用域链只能一级一级的往上查询函数,不能往下级搜索函数。
举个栗子:
var a=10;
function numberone(){
var b=20;
function numbertwo(){
var c=30;
console.log(c);//由于函数不能在外部环境被调用,所以没有输出值
}
console.log(b);//20
}
numberone();
numbertwo();//不能再外部环境搜索到函数
会出现以下错误:
那应该怎么做才能在外部环境调用函数内部的函数呢?
先在函数外部定义一个变量,用来接收函数内部的函数的函数名。如下:
//定义一个变量名
var last;
function numberone(){
var b=20;
function numbertwo(){
var c=30;
console.log(c);
}
last=numbertwo;
console.log(b);
}
//先调用外部函数
numberone();
//再调用内部函数
last();