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
Лучше всего сохранить значение по умолчанию в переменной и сравнить его во время выполнения. Но это бессмысленно.