Разрушение назначения в for ... цикла и выполнения контекста в Javascript - PullRequest
0 голосов
/ 06 января 2019

Я хочу получить глубокое понимание for ... циклов и назначения деструктурирования в JS. Следующий код выдает ошибку в строке 3: «ReferenceError: y не определен», но «y» определен непосредственно перед оператором цикла for. В чем проблема?

let arr = [ ];
let y = 8;
for (let { x = 2, y } of [{ x: 1 }, 2, { y }]) {  
    arr.push(x, y);
}
console.log(arr);

1 Ответ

0 голосов
/ 06 января 2019

Кажется, что y находится во временной мертвой зоне в блоке for.

Не использование y в инициализации объекта решает проблему:

let arr = [];
let z = 8;
for (let { x = 2, y } of [{ x: 1 }, 2, { y: z }]) {  
  arr.push(x, y);
}
console.log(arr);
...