函数命名表达式
PLDaily opened this issue · comments
<PENG /> commented
函数命名表达式又叫Named Function Expression,主要作用是为了方便递归。
如果你想在函数体内部引用当前函数,则需要创建一个命名函数表达式。然后函数名称将会(且只会)作为函数体(作用域内)的本地变量。这样也可以避免使用非标准的 arguments.callee 属性。
var math = {
factorial: function factorial(n) {
if (n <= 1)
return 1;
return n * factorial(n - 1);
}
}
math.factorial(3);//6
var math = {
factorial: function(n) {
if (n <= 1)
return 1;
return n * factorial(n - 1);
}
}
math.factorial(3);//factorial is not defined
你给函数取的名字是可以在函数体内使用的,可以方便你实现递归,然后这个名字还不会和别的变量名互相冲突。
var aaa = function bbb() {
console.log(111);
}
aaa();//111
bbb();//bbb is not defined
bbb函数被你封印在了f函数里,在外界是访问不到的,你可以在aaa函数的内部去访问bbb,像这样
var aaa = function bbb(n) {
if (n <= 1)
return 1;
return n * bbb(n - 1);
}
aaa(3);//6