2014-10-26 2 views
39

Я пытаюсь выяснить, есть ли способ использовать деструкционирование объектов по умолчанию, не беспокоясь о частично определенном объекте. Рассмотрим следующий пример:ES6 Object Destructuring Параметры по умолчанию

(function test({a, b} = {a: "foo", b: "bar"}) { 
 
    console.log(a + " " + b); 
 
})();

Когда я называю это с {a: "qux"}, например, я вижу qux undefined в консоли, когда то, что я действительно хочу qux bar. Есть ли способ достичь этого без ручной проверки всех свойств объекта?

ответ

79

Да. Вы можете использовать «по умолчанию» в а уничтожении того:

(function test({a = "foo", b = "bar"} = {}) { 
 
    console.log(a + " " + b); 
 
})();

Это не ограничиваются параметрами функции, но работает в каждом деструктурирующем выражении.

+2

Nifty! Кажется, что установка значений по умолчанию на стороне деструктурирования (как вы это делаете) всегда будет предпочтительнее делать это на стороне параметра по умолчанию (например, я был). Ты бы согласился с этим? Можете ли вы придумать что-нибудь, что можно было бы наблюдать? – user3019273

+2

Я не думаю, что кто-то «предпочитает» другого. Он просто делает что-то еще. – Bergi

+0

очень хороший пример – Leo