2015-04-27 2 views
1

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

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

someFunc(); //0 undefined 
+2

Я чувствую проблему XY. Что вы пытаетесь сделать точно? Зачем вам нужно считывать значения по умолчанию внутри функции? –

ответ

0

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

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

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

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

0

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

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

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

someFunc(); //0 undefined 

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

Смежные вопросы