1, z = 2;
function foo(
x = w + 1,
y = x + 2,
z = z + 3
) {
console.log(x, y, z);
};
foo();
У аргументов в js есть своя область видимости, типа:
{ let x = w + 1, y = x + 2, z = z + 3 }
Начнется инициализация x, она начнет искать w в области видимости аргументов, не найдет там w, поднимется вверх и найдет w = 1, y инициализируется, так как x уже есть.
А вот z попытается найти z в области видимости аргументов, найдет z (поэтому поднятия вверх не будет), но так как z не инициализирована, а мы пытаемся ее использовать, то упадет ошибка.
Так?
нет, тут дело в том, что именованные аргументы функций - не то же самое, что переменные. Они не всплывают, и z не будет искаться снаружи функции
Обсуждают сегодня