我想用块作用域声明两个变量并将它们初始化为相同的值。如果以下方法以这种方式工作会很好,但它不会......
{
let a = b = "wang";
}
console.log("b:", b);
变量' a'有块范围但可变' b'没有,它的功能范围就像用var。
声明一样是否有一条线路*完成此任务或我必须做...
let a, b;
a = b = "wang";
*并不是说我会在公共汽车上抛出可读性以节省你理解的几个字符,我只是好奇!
答案 0 :(得分:24)
您可以在单个let
声明中执行以下操作:
{
let a = "wang", b = a;
}
console.log("b:", b); //undefined or ReferenceError
因为a
和b
都在大括号内声明let
,所以它们都获得了块范围。您必须先分配a
,以便在将其分配给b
之前分配web.config
。
答案 1 :(得分:12)
您可以将数组destructuring与fill
一起使用,以避免重复该值:
{
let [a, b, c, d] = Array(4).fill("wang");
console.log(a, b, c, d); // "wang", "wang", "wang", "wang"
}
a; // ReferenceError
如果您不想打扰变量的数量并且不想分配大数组,您还可以使用立即调用的生成器函数表达式。为简单起见,将其实现为辅助函数
可能是个好主意
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
答案 2 :(得分:2)
你可以试试吗
{ let [a, b] = [3, 3]; console.log(a); console.log(b)}
答案 3 :(得分:2)
任务从右到左进行。所以,let语句仅适用于a
而不适用b
所有其他变量在没有var / let语句的情况下被视为全局变量,因此b
将是全局