2017-02-13 50 views
1

一边念叨新ES6功能,我发现伟大的方式来定义的默认值:如何为中间变量参数使用ECMAScript 6默认值功能?

在ECMAScript中6,我们可以添加默认值到 函数的参数。这意味着如果我们稍后在 函数调用中不传入参数,将使用默认参数。在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} 

回答

4

传递undefined被视为与传递什么(关于默认值):

f(undefined, 20, 30, 40); 

但是这是一个很好的做法是只在一个函数最右边的参数提供默认值:

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

编号参数alwa y从左到右填充。提供后续产品时,您不能跳过前面的产品。 (你可以在函数体中编写代码,它查看你已经传递了多少个参数并重新排列它们,但没有为此做任何构建)。