JS声明并分配多变量inLine es6?

JS Declare and assign multi variable inLine es6?

是否可以使用 es6 语法在同一行中声明和分配多个变量? 举个例子, 假设我需要给 mX,mY,mXDZ,mYDZ 赋值“50”。 我该如何执行此操作?

let [mX,mY,mXDZ,mYDZ] = 50;
let mX,mY,mXDZ,mYDZ = 50; // !just why not! 

我主要是看可读性。

您可以声明所有变量,然后在单独的语句中初始化它们:

let mX,mY,mXDZ,mYDZ;
mX = mY = mXDZ = mYDZ = 50;

在变量声明语句(letvarconst)中,语法是这样的,每个 个人 变量可以有一个初始化表达式。没有规定从一个表达式进行多次初始化。

通过解构,你可以这样做:

let [mX, mY, mXDZ, mYDZ] = [50, 50, 50, 50];

但这对我来说似乎 "better" 没有任何意义,至少在可读性方面如此。好像是error-prone.

需要注意的是

let mX = mY = mXDZ = mYDZ = 50;

绝对不正确。该语句被解析为

let mX = (mY = mXDZ = mYDZ = 50);

这将创建一个局部变量 ("mX") 和三个 隐式全局变量 。在 "strict" 模式下会报错;在 non-strict 模式下,它也是一个错误,但更难调试。

不,这不太可能。解构需要一个有多个值1的东西分配给多个目标,而不是单个值。但是你可以作弊:

function* repeat(x) { while(true) yield x; }

let [mX, mY, mXDZ, mYDZ] = repeat(50);

除此之外,在多重声明中,每个变量都需要自己的初始化程序:

let mX = 50, mY = 50, mXDZ = 50, mYDZ = 50;

当然你也可以使用一个共享变量:

let val = 50, mX = val, mY = val, mXDZ = val, mYDZ = val;

1:你也可以多次解构同一个属性(let {val:mX, val:mY, val:mXDZ, val:mYDZ} = {val:50};),但它仍然需要一个对象。