Подсказка говорит, что const [b,a] = [a,b]
приведет к значению a, b как неопределенному (простое правило назначения слева направо).Я не могу понять, почему это происходит.
Это не так.Если FreeCodeCamp говорит, что это так, это неправильно.
Если вы добавите const
до [b,a] = [a,b]
, вы получите ReferenceError, потому что вы будете shadowing внешней a
иb
с внутренними и пытается использовать внутренние до того, как они были инициализированы:
let a = 8, b = 6;
(() => {
const [b,a]=[a,b];
})();
console.log(a); // should be 6
console.log(b); // should be 8
Если они подразумевали использование const
вместо let
в первоначальном объявлении, то также не будет иметь эффекта, который они перечисляют.Вместо этого вы получите TypeError, потому что пытаетесь присвоить константу:
const a = 8, b = 6;
(() => {
[b,a]=[a,b];
})();
console.log(a); // should be 6
console.log(b); // should be 8