Деструктуризация объекта с параметрами по умолчанию в Node.js 8.9.4 - PullRequest
0 голосов
/ 12 июня 2018

У меня была проблема с запуском этого фрагмента кода здесь, когда он был сохранен в текстовый файл и запущен с узлом в командной строке.

let x;

{k1: x = null } = {k1: "Hello"};
console.log(x);

Запуск этого кода привел бы к ошибке при использовании оператора присваивания.неверно.

Однако, когда код вводится непосредственно в интерпретатор узла, он выводит "Hello", чего я и ожидаю.

Кто-нибудь знает, что это может быть?Идея состоит в том, чтобы создать класс со значениями по умолчанию и обновить класс, используя тот же метод, повторно используя текущие значения, когда чего-то не хватает.

1 Ответ

0 голосов
/ 12 июня 2018

Вы должны использовать назначение без декларации

let x;
({k1: x = null } = {k1: "Hello"});

или просто:

let { k1: x = null } = { k1: "Hello" };

Круглые скобки (...) вокругОператор присваивания является обязательным синтаксисом при использовании объектного литерального деструктурирования присваивания без объявления.

{a, b} = {a: 1, b: 2} не является допустимым автономным синтаксисом, так как {a, b} в левой части считается блоком, а не литералом объекта.

Однако, ({a, b} = {a: 1, b: 2}) допустимо, так же как и var {a, b} = {a: 1, b: 2}

ПРИМЕЧАНИЕ: Вашему выражению (...) должна предшествовать точка с запятой, или оно может использоваться для выполнения функции в предыдущей строке.

...