当局部函数递归调用自身时,因为定义函数时是先创建函数、然后指定局部变量名,因此在局部函数体中并不知道自已的名字是一个局部变量,这样导致局部函数在函数体内部不认识自已的名字。
例如:
var 递归 = function ( 计数 ){
if ( 计数 <= 0 )
return 计数
else
return 递归( 计数-1 ) // 出错了找不到函数名字"递归"
}
//调用递归函数
递归( 5 )
解决办法:
//在定义函数以前声明局部变量名字
var 递归;
//然后再定义函数体
递归 = function ( 计数 ){
if ( 计数 <= 0 )
return 计数
else
return 递归( 计数-1 ) // 出错了找不到函数名字"递归"
}
io.open()
//调用递归函数
io.print( 递归( 5 ) )