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;
在变量声明语句(let
、var
或 const
)中,语法是这样的,每个 个人 变量可以有一个初始化表达式。没有规定从一个表达式进行多次初始化。
通过解构,你可以这样做:
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};
),但它仍然需要一个对象。
是否可以使用 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;
在变量声明语句(let
、var
或 const
)中,语法是这样的,每个 个人 变量可以有一个初始化表达式。没有规定从一个表达式进行多次初始化。
通过解构,你可以这样做:
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};
),但它仍然需要一个对象。