ES6 Получить параметры / аргументы по умолчанию

Как я могу получить значение параметров / аргументов по умолчанию динамически, не используя переменную параметра?

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

someFunc(); //0 undefined

2 ответа

Решение

Я хотел сделать то же самое, чтобы назначить несколько атрибутов экземпляру моего класса.

Этот подход может не помочь вам, так как он использует один аргумент объекта вместо двух аргументов, все же стоит упомянуть:

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

Обратите внимание, что этот подход требует, чтобы ваш аргумент был объектом, и что при наличии одного из двух аргументов другой не будет присутствовать в объекте по умолчанию.

Вы не Подумайте об этом таким образом. Как вы получаете значение по умолчанию со старым методом?

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

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

someFunc(); //0 undefined

Лучше всего сохранить значение по умолчанию в переменной и сравнить его во время выполнения. Но это бессмысленно.

Другие вопросы по тегам