PLDaily / blog

✨My Notes

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

函数命名表达式

PLDaily opened this issue · comments

函数命名表达式又叫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