gpt4 book ai didi

javascript - 是否可以在休息参数上设置默认参数值

转载 作者:可可西里 更新时间:2023-11-01 02:22:40 24 4
gpt4 key购买 nike

ES6 引入了一大堆方便的“语法糖”。其中有 default parameter JavaScript 函数的能力,以及 rest parameters .我发现每当尝试在剩余参数上设置默认参数值时,我的控制台(或 devTools)都会提示(,抛出错误)。令人惊讶的是,我在其他地方发现很少有人提到这个特定问题,我想知道 1.) 是否有可能这样做以及 2.) 为什么不(假设这是不可能的) ).

例如,我设计了一个微不足道的(但希望仍然有目的的)示例。在该函数的第一次迭代中,我构建了函数,使其能够正常工作(也就是说,没有为其余参数提供默认值)。

const describePerson = (name, ...traits) => `Hi, ${name}! You are ${traits.join(', ')}`;

describePerson('John Doe', 'the prototypical placeholder person');
// => "Hi, John Doe! You are the prototypical placeholder person"

但是,现在使用默认值:

const describePerson = (name, ...traits = ['a nondescript individual']) => `Hi, ${name}! You are ${traits.join(', ')}`;

describePerson('John Doe');
// => Uncaught SyntaxError: Unexpected token =

非常感谢任何帮助。

最佳答案

不,rest 参数不能有默认初始化器。语法不允许这样做,因为初始化程序永远不会运行 - 参数总是被分配一个数组值(但可能是一个空值)。

你想做的事情可以通过任何一种方式实现

function describePerson(name, ...traits) {
if (traits.length == 0) traits[0] = 'a nondescript individual';
return `Hi, ${name}! You are ${traits.join(', ')}`;
}

function describePerson(name, firstTrait = 'a nondescript individual', ...traits) {
traits.unshift(firstTrait);
return `Hi, ${name}! You are ${traits.join(', ')}`;
}

// the same thing with spread syntax:
const describePerson = (name, firstTrait = 'a nondescript individual', ...otherTraits) =>
`Hi, ${name}! You are ${[firstTrait, ...otherTraits].join(', ')}`

关于javascript - 是否可以在休息参数上设置默认参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42650594/

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