У меня возникла проблема с запуском этого фрагмента кода, когда он был сохранен в текстовый файл и запущен с узлом в командной строке.
let x;
{k1: x = null } = {k1: "Hello"};
console.log(x);
Выполнение этого приведет к ошибке при неправильном действии оператора присваивания.
Однако, когда код напрямую вводится в интерпретатор узла, он распечатает "Hello"
что и я ожидаю.
Кто-нибудь знает, что это может быть? Идея состоит в том, чтобы построить класс со значениями по умолчанию и обновить класс с использованием того же метода, повторно используя текущие значения, когда чего-то не хватает.
Вы должны использовать объявление назначения wihout
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}
ПРИМЕЧАНИЕ. Вашему выражению (...) должно предшествовать точка с запятой или она может использоваться для выполнения функции в предыдущей строке.