javascript - img - title html attribute
¿Hay una manera de hacer la asignación múltiple y la inicialización con el alcance del bloque? (4)
La asignación pasa de derecha a izquierda. Por lo tanto, dejar que la declaración solo sea aplicable a a
y no a b
Todas las demás variables se consideran globales sin la declaración var / let, por lo que b
será la global
Me gustaría declarar dos variables con alcance de bloque e inicializarlas al mismo valor. Sería bueno si lo siguiente funcionara de esa manera pero no ...
{
let a = b = "wang";
}
console.log("b:", b);
La variable ''a'' tiene un alcance de bloque, pero la variable ''b'' no, tiene un alcance de función como si estuviera declarada con una var.
¿Hay una sola línea * forma de lograr esto o tengo que hacer ...
let a, b;
a = b = "wang";
* no es que arrojara legibilidad debajo de un bus para salvar un par de caracteres que entiendes, solo tengo curiosidad!
Puede utilizar la destructuring matrices con fill
para evitar repetir el valor:
{
let [a, b, c, d] = Array(4).fill("wang");
console.log(a, b, c, d); // "wang", "wang", "wang", "wang"
}
a; // ReferenceError
Si no quiere preocuparse por el número de variables y no desea asignar grandes matrices, también puede usar una expresión de función de generador invocada de inmediato. Para simplificar, puede ser una buena idea implementar esto como una función auxiliar.
const repeat = function*(value){while(true) yield value};
{
let [a, b, c, d] = repeat("wang");
console.log(a, b, c, d); // "wang", "wang", "wang", "wang"
}
a; // ReferenceError
Puedes hacerlo en una única declaración de let
siguiente manera:
{
let a = "wang", b = a;
}
console.log("b:", b); //undefined or ReferenceError
Debido a que tanto a
como b
se declaran y se let
dentro de las llaves, ambos obtienen el alcance del bloque. Debe asignar a
primero para que se asigne antes de asignarlo a b
también.
Puedes intentar con
{ let [a, b] = [3, 3]; console.log(a); console.log(b)}