Есть ли способ выполнить множественное назначение и инициализацию с помощью области блока?
Я хотел бы объявить две переменные с областью блока и инициализировать их до того же значения. Было бы неплохо, если бы это сработало, но это не...
{
let a = b = "wang";
}
console.log("b:", b);
Переменная 'a' имеет область блока, но переменная 'b' не имеет, она имеет функциональную область, как если бы она была объявлена с помощью var.
Есть ли одна линия * способ выполнения этого или мне нужно делать...
let a, b;
a = b = "wang";
* не то, что я бы бросил читаемость под автобусом, чтобы сохранить пару символов, которые вы понимаете, мне просто интересно!
Ответы
Ответ 1
Вы можете сделать это в одном объявлении let
следующим образом:
{
let a = "wang", b = a;
}
console.log("b:", b); //undefined or ReferenceError
Поскольку как a
, так и b
объявляются с помощью let
внутри фигурных скобок, они оба получают область блока. Вы должны сначала назначить a
так, чтобы он был назначен, прежде чем назначать его также b
.
Ответ 2
Вы можете использовать массив destructuring с fill
, чтобы избежать повторения значения:
{
let [a, b, c, d] = Array(4).fill("wang");
console.log(a, b, c, d); // "wang", "wang", "wang", "wang"
}
a; // ReferenceError
Ответ 3
Можете ли вы попробовать с
{ let [a, b] = [3, 3]; console.log(a); console.log(b)}
Ответ 4
Назначение происходит справа налево. Итак, оператор let применим только к a
, а не b
Все остальные переменные считаются глобальными без оператора var/let, поэтому b
будет глобальным