如何为中间变量参数使用ECMAScript 6默认值功能?

时间:2017-02-13 15:51:47

标签: javascript

在阅读有关新ES6功能的同时,我找到了定义默认值的好方法:

  

在ECMAScript 6中,我们可以为a的参数添加默认值   功能。这意味着如果我们之后没有传入参数   函数调用时,将使用默认参数。在ES5中默认   参数值始终设置为undefined,因此新的   将它们设置为我们想要的东西的可能性绝对是一个伟大的   增强语言。

因此使用它非常简单:

function f(p1=1, p2=2, p3=3, p4=4, p5=5){
  return "{p1: " + p1 + ", p2: " + p2 + ", p3: " + p3 + ", p4: " + p4 + ", p5: " + p5 + "}";
}
var test = f();
console.log( test );
//outputs: {p1: 1, p2: 2, p3: 3, p4: 4, p5: 5}

我想知道我们如何使用此功能来执行以下操作:

function f(p1=1, p2, p3, p4, p5=5){
  return "{p1: " + p1 + ", p2: " + p2 + ", p3: " + p3 + ", p4: " + p4 + ", p5: " + p5 + "}";
}
var test = f(,20, 30, 40,); //which is not correct

所以当我执行它时,我得到了这个结果:

{p1: 1, p2: 20, p3: 30, p4: 40, p5: 5}

2 个答案:

答案 0 :(得分:4)

传递undefined与传递任何内容(关于默认值)相同:

f(undefined, 20, 30, 40);

但是,最好只为函数中最右边的参数提供默认值:

function f(p2, p3, p4, p1=1, p5=5) { … }
f(20, 30, 40);

答案 1 :(得分:1)

没有。参数总是从左到右填充。在提供以后的产品时,您不能跳过之前的产品。

(你可以在函数体中编写代码,它会查看你传递了多少个参数并重新排列它们,但没有任何内置的东西可以用来做)。