【问题标题】:ES6 Get default parameters/argumentsES6 获取默认参数/参数
【发布时间】:2015-04-27 07:29:22
【问题描述】:

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

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

someFunc(); //0 undefined

【问题讨论】:

  • 我闻到了 XY 问题。你到底想做什么?为什么需要读取函数内部的默认值?

标签: javascript ecmascript-6 default-arguments


【解决方案1】:

我也想这样做,以便为我的类的实例分配几个属性。

这种方法可能对您没有帮助,因为它使用一个 object 参数而不是两个参数,仍然值得一提:

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']);
}

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-01
      相关资源
      最近更新 更多