可以使用默认参数值与相同的函数名称

It is possible to use default parameter value its same function name

提问人:navedhn 提问时间:11/23/2022 最后编辑:Martijn Vissersnavedhn 更新时间:11/24/2022 访问量:23

问:

我想知道是否可以在其默认参数中使用函数本身。

function somename(a,b=somename()){
    return a+b;
}
somename(10);
JavaScript ecmascript-6 默认参数

评论

0赞 Bergi 11/24/2022
是的,但是您的特定示例会导致无限递归和堆栈溢出。

答:

2赞 CertainPerformance 11/23/2022 #1

当然可以,只要你设计的逻辑不会进入无休止的递归循环。例如:

function somename(a, b = somename(3, 5)) {
  return a + b;
}
console.log(somename(10));

0赞 pope_maverick 11/24/2022 #2

是的你可以。

功能与它的身体一起被吊起。因此,参数和内部用途被视为环境,而不是函数本身。除非您不小心调用了调用签名“()”的函数

eg: someName() // invoking the function someName
    someName // will search for the variable definition along the scope chain.

因此,如果你不小心在里面调用了该函数,你最终会得到一个递归调用的无限循环,除非有一个条件从它返回

eg:
function someName(a = someName) {
 someName(); // Now you are invoking the function with the signature :()"
}

评论

0赞 Bergi 11/24/2022
它甚至适用于未提升的命名函数表达式