Javascript 在ES6中使用扩展语法时使用默认参数?
我知道,在es6中定义函数时,可以使用带有参数(Rest参数)的扩展运算符语法,如下所示:Javascript 在ES6中使用扩展语法时使用默认参数?,javascript,parameters,ecmascript-6,default-parameters,Javascript,Parameters,Ecmascript 6,Default Parameters,我知道,在es6中定义函数时,可以使用带有参数(Rest参数)的扩展运算符语法,如下所示: function logEach(...things) { things.forEach(function(thing) { console.log(thing); }); } logEach("a", "b", "c"); // "a" // "b" // "c" 我的问题: 可以将默认参数与排列语法一起使用吗?这似乎不起作用: function logDefault(...thi
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
JavaScript不支持rest参数的默认值 您可以在函数体中拆分参数并合并它们的值:
函数日志默认值(head=“nothing”,…tail){
[head,…tail].forEach(函数(事物){
console.log(东西);
});
}
logDefault();//“没什么”
logDefault(“a”、“b”、“c”);//a、 b,c
否,当没有参数时,rest参数将被分配一个空数组;无法为其提供默认值
你会想用
function logEach(...things) {
for (const thing of (things.length ? things : ['nothing to Log'])) {
console.log(thing);
}
}
这有什么意义
things
将是一个包含剩余参数的数组,默认值为空数组。您不能只检查things。length
以确定是否未传递任何内容?…things
称为a(有些人将其描述为“聚集”)。语法与spread相同,但与spread相反。相关:。