在Javascript中将多个variables设置为相同的值
我在JavaScript文件中初始化了全局范围中的几个variables:
var moveUp, moveDown, moveLeft, moveRight; var mouseDown, touchDown;
我需要将所有这些variables设置为false,这是我目前的代码:
moveUp = false; moveDown = false; moveLeft = false; moveRight = false mouseDown = false; touchDown = false;
有什么办法可以将所有这些variables设置为一行代码中的相同的值,或者是我目前有最好的方法来做到这一点
没有什么能阻止你做
moveUp = moveDown = moveLeft = moveRight = mouseDown = touchDown = false;
检查这个例子
var a, b, c; a = b = c = 10; console.log(a + b + c)
没有什么能阻止你做到这一点,但坚持!
有一些陷阱。 在Javascript中的赋值是从右到左,所以当你写:
var moveUp = moveDown = moveLeft = moveRight = mouseDown = touchDown = false;
它有效地转化为:
var moveUp = (moveDown = (moveLeft = (moveRight = (mouseDown = (touchDown = false)))));
这有效地转化为:
var moveUp = (window.moveDown = (window.moveLeft = (window.moveRight = (window.mouseDown = (window.touchDown = false)))));
无意中,你刚刚创build了三个5个全局variables – 我敢肯定你不想这样做。
长话短说,你应该坚持很长的路要走。 这是丑陋的,有更多的人物键入,但至less你不会混淆全球命名空间,并从其他人(jk)怪异的目光。
另外,正如在注释中所指出的(这不仅仅是这个问题的情况),只要你把对象赋值给一个variables,引用被复制,并且这两个variables仍然指向同一个对象,所以任何一个variables的改变结转。
还有另一个选项,当试图将多个variables初始化为相同的值时,不会引入全局的陷阱。 一个判断的呼声,是不是长久以来最好呢? 它可能会更慢,可能会或可能不会更具可读性。 在你的具体情况下,我认为很长的一段路可能更具可读性和可维护性,而且速度更快。
另一种方式利用解构分配 。
let [moveUp, moveDown, moveLeft, moveRight, mouseDown, touchDown] = Array(6).fill(false); console.log(JSON.stringify({ moveUp, moveDown, moveLeft, moveRight, mouseDown, touchDown }, null, ' '));