В чем разница между [b, a] = [a, b] и const [b, a] = [a, b] - PullRequest
3 голосов
/ 04 апреля 2019

При разрушении результат действительно различается между этими двумя кодами. Я не уверен почему.

Подсказка говорит, что const [b,a] = [a,b] приведет к значению a,b как undefined (простое правило назначения слева направо). Я не могу понять, почему это происходит.

let a = 8, b = 6;
(() => {
    [b,a]=[a,b];

})();
console.log(a); // should be 6
console.log(b); // should be 8

Результат изменился, но при подключении const значение не переключается.

1 Ответ

11 голосов
/ 04 апреля 2019

Подсказка говорит, что 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...