自调用这个匿名函数
这样解释器会报错
为什么呢? 原因可以看一个普通js函数的调用
这是一个函数声明,如果在这么一个声明后直接加上括号调用,解析器不能理解而会报错:
而a函数申明时候,调用就可以直接加 ()
这里可以看出无论是命名函数还是匿名函数,都是函数申明,而直接对匿名函数加 () 之后,解释器就不能理解而报错了
要自调用匿名函数,就需要把匿名函数声明语句变成一个表达式
function Calc(val){function multi(a,b){
return a*b
}
function fun(v){
if(v<=1){
return 1
}
//调用自身,递归
return multi(v,fun(v-1))
}
return fun(val)
}
console.log("3的阶乘是:"+Calc(3))