javascript - 在 ES6 中使用扩展语法时使用默认参数?

标签 javascript parameters ecmascript-6 default-parameters

据我了解,在 es6 中定义函数时,您可以使用带有参数(Rest Parameters)的扩展 operator 语法,如下所示:

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

最佳答案

不,当没有剩余参数时,rest 参数会被分配一个空数组;无法为其提供默认值。

你会想要使用

function logEach(...things) {
  for (const thing of (things.length ? things : ['nothing to Log'])) {
    console.log(thing);
  }
}

关于javascript - 在 ES6 中使用扩展语法时使用默认参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40118614/

相关文章:

javascript - Node.js 应用、Express 和 Cloud Foundry

javascript - 复选框事件和保存数组 - 如何在代码中处理?

javascript - 在 javascript 中编辑原型(prototype)方法 .push()

java - Java中的惰性参数类型?

javascript - Vis.js 关注当前时间(红线)

javascript - ajax post 成功后淡入淡出

Javascript 函数参数不会加载

javascript - 修改动态嵌套数组,只知道要访问的索引

javascript - 解释在调用 Javascript ES6 中的对象方法的函数中使用 'this'

javascript - 为什么使用 Webpack 和 Gulp 构建的输出包这么大(>1.9Mb)?