ES6获取默认参数/参数

时间:2015-04-27 07:29:23

标签: javascript ecmascript-6 default-arguments

如何在不使用参数变量的情况下动态获取默认参数/参数的值?

function someFunc(param1 = 'value', param2 = 'value') {
    console.log(arguments.length);
    console.log(arguments[0]);
}

someFunc(); //0 undefined

2 个答案:

答案 0 :(得分:1)

我想做同样的事情,以便为我的班级实例分配几个属性。

这种方法可能对你没用,因为它使用一个对象参数而不是两个参数,值得一提:

class MyClass{
  constructor(params={param1:3.1415, param2:'Hello'}){
    //*assign* effectively destructures the params arg
    Ojbect.assign(this,params);
  }
}

同样,您的示例如下所示:

function someFunc(params = {param1:'value', param2: 'value'}) {
    console.log(Object.keys(params).length);
    console.log(params['param1']);
}

请注意,此方法要求您的参数为对象,并且给定两个参数中的一个,另一个参数将不会出现在默认对象中。

答案 1 :(得分:0)

你没有。这样想吧。如何使用旧方法获取默认值?

function someFunc(param1, param2) {
    param1 = param1 || 'value';
    param2 = param2 || 'value';

    console.log(arguments.length);
    console.log(arguments[0]);
}

someFunc(); //0 undefined

最好的办法是将默认值存储在变量中,并在运行时进行比较。但那是毫无意义的。