错误:
var b = 10; var c = 0; var a = abc(); function abc() { if (c == b){ return 1 } else{ b--; abc() } } console.log(a) //无法正确赋值 undefined
正确:
var b = 10; var c = 0; var a = abc(); function abc() { if (c == b){ return 1 } else{ b--; return abc() } } console.log(a) // 1
原因:最后一次进行递归操作的时候值是返回了,但是只是返回到了递归自己调用的函数里,而最初的函数是没有返回值的·,所以打印出来就是undefined,如果想要函数最后一次计算所得值,就需要在每次调用该函数的时候进行return,每一次return都是把最新的函数调用返回到外层的函数调用,所以通过调用函数就能拿到值了。