gpt4 book ai didi

javascript - switch语句是尾递归的吗?

转载 作者:行者123 更新时间:2023-11-30 11:48:43 25 4
gpt4 key购买 nike

我不时地使用 switch 语句。我经常发现自己想在我的函数中使用 return 语句。我想知道以这种方式编写的 switch 语句是否仍然是尾调用优化的。

function misc(x) {
switch(true){
case x > 1:
return misc(x-1);
break;
default:
return;
}
}

需要更改什么才能优化 case x > 1 尾调用。是否可以使用 switch 语句,或者我是否必须使用其他类似 if 语句的语句?

注意:我知道大多数主流浏览器的 JavaScript 不支持尾调用优化。我主要只是想知道上面的代码是否与尾调用优化兼容,无论当前浏览器是否支持它。

最佳答案

ES6 中对尾部调用优化的要求仅取决于函数调用是否处于尾部位置——也就是说,函数是否是返回前最后执行的事情。

在你的情况下:

return misc(x-1);

misc() 放在尾部位置。因此它可以进行尾调用优化。

不可能发生这种情况的情况是,如果您要执行以下操作:

return 1 + misc(x-1);

那是因为它将等同于:

var tmp = misc(x-1);
tmp = 1 + tmp;
return tmp;

这意味着 misc() 不会在尾部位置。

所以 return 是否在 ifwhileswitch 中并不重要,因为只要函数在尾部位置,它就可以进行尾部调用优化。

关于javascript - switch语句是尾递归的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40098866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com