你了解javascript的内嵌函数吗?我们不凡先做个小测试,你认为下面的代码运行结果会是什么呢? < script > function outerFn(firNum) { var firNum=firNum; firNum+=firNum; function innerFn(secNum) { firNum+=secNum; return firNum; } return innerFn; } function test() { var inNum = prompt(’请输入一个数字’,0); while(isNaN(inNum)) { inNum = prompt(’请输入一个数字’,0); } var outerRet = outerFn(parseInt(inNum));//call outer function var lastRet = outerRet(parseInt(inNum));//call inner function var userRet = prompt(’请输入你认为正确的结果数字’,0); if(userRet==lastRet) {alert(’恭喜你答对,你已经了解内嵌函数。’);} else { alert(’很遗憾,你打错,正确答案是:’+lastRet+’,建议你了解内嵌函数。’) } } < / script> 继续看 你对javascript内嵌函数还不是很了解,请参考下面解释 javascript提供很多内置函数给大家调用,像alert(),call(),sort()等等,也可以自定义函数,如下面代码 function myFirstFn() { return "this is my first Function"; } 上面代码定义了一个很简单的函数,调用myFirstFn返回一个字符串"this is my first Function",简单函数一看就会,很容易理解。复杂一点的内嵌函数该如何定义和使用呢?我们从上面测试的例子来说吧,outerFn是外层函数,innerFn是内嵌函数,上面例子中调用外层函数时返回的是内嵌函数,其实就是下面这样 function outerFn(firNum) // outer function { var firNum=firNum; firNum+=firNum; return function innerFn(secNum)//inner function { firNum+=secNum; return firNum; } } 当调用outerFn(aNum)时,将返回innerFn这个函数,因此最终的结果其实是aNum+aNum+aNum. 内嵌函数使函数可以作为一般的数据使用,可以作为参数传给其他函数,内嵌函数可以使用外部函数的定义的变量,在外部函数以外是不可见的,内嵌函数必须定义在外部函数的最顶级,不能放在if和循环(while)块中。 以上是小弟对内嵌函数的一些理解,欢迎大家拍砖板。