Nada impede você de fazer o acima, mas aguente!
Existem algumas dicas. A atribuição em Javascript é da direita para a esquerda, então quando você escreve:
var moveUp = moveDown = moveLeft = moveRight = mouseDown = touchDown = false;
traduz efetivamente para:
var moveUp = (moveDown = (moveLeft = (moveRight = (mouseDown = (touchDown = false)))));
que se traduz efetivamente em:
var moveUp = (window.moveDown = (window.moveLeft = (window.moveRight = (window.mouseDown = (window.touchDown = false)))));
Inadvertidamente, você acabou de criar 5 variáveis globais - algo que tenho certeza de que não queria fazer.
Nota: Meu exemplo acima pressupõe que você esteja executando seu código no navegador window
. Se você estivesse em um ambiente diferente, essas variáveis se vinculariam a qualquer que seja o contexto global desse ambiente (por exemplo, no Node.js, ele se anexaria aglobal
qual é o contexto global para esse ambiente).
Agora você pode primeiro declarar todas as suas variáveis e depois atribuí-las ao mesmo valor e evitar o problema.
var moveUp, moveDown, moveLeft, moveRight, mouseDown, touchDown;
moveUp = moveDown = moveLeft = moveRight = mouseDown = touchDown = false;
Para encurtar a história, ambas as maneiras funcionariam perfeitamente, mas a primeira maneira poderia introduzir alguns erros perniciosos no seu código. Não cometa o pecado de jogar lixo no espaço de nomes global com variáveis locais, se não for absolutamente necessário.
Nota: Como indicado nos comentários (e esse não é apenas o caso desta pergunta), se o valor copiado em questão não for um valor primitivo, mas um objeto, é melhor conhecer cópia por valor vs cópia por referência. Sempre que atribuir objetos, a referência ao objeto é copiada em vez do objeto real. Todas as variáveis ainda apontam para o mesmo objeto, portanto, qualquer alteração em uma variável será refletida nas outras variáveis e causará uma grande dor de cabeça se sua intenção for copiar os valores do objeto e não a referência.