据我所知,在es6中定义一个函数时,可以使用spread operator 语法和参数(Rest Parameters),如下所示:
function logEach(...things) {
things.forEach(function(thing) {
console.log(thing);
});
}
logEach("a", "b", "c");
// "a" // "b" // "c"
我的问题:
您可以使用默认参数和传播语法吗?这似乎不起作用:
function logDefault(...things = 'nothing to Log'){
things.forEach(function(thing) {
console.log(thing);
});
}
//Error: Unexpected token =
// Note: Using Babel
答案 0 :(得分:2)
JavaScript不支持rest参数的默认值。
您可以拆分参数并在函数体中合并它们的值:
function logDefault(head = "nothing", ...tail) {
[head, ...tail].forEach(function(thing) {
console.log(thing);
});
}
logDefault(); // "nothing"
logDefault("a", "b", "c"); // a, b, c
答案 1 :(得分:2)
不,当没有参数时,rest参数被赋予一个空数组;没有办法为它提供默认值。
您想要使用
function logEach(...things) {
for (const thing of (things.length ? things : ['nothing to Log'])) {
console.log(thing);
}
}