Nic nie powstrzymuje Cię przed zrobieniem powyższego, ale poczekaj!
Jest kilka pułapek. Przypisanie w Javascript jest od prawej do lewej, więc kiedy piszesz:
var moveUp = moveDown = moveLeft = moveRight = mouseDown = touchDown = false;
skutecznie przekłada się na:
var moveUp = (moveDown = (moveLeft = (moveRight = (mouseDown = (touchDown = false)))));
co skutecznie przekłada się na:
var moveUp = (window.moveDown = (window.moveLeft = (window.moveRight = (window.mouseDown = (window.touchDown = false)))));
Nieumyślnie właśnie utworzyłeś 5 zmiennych globalnych - jestem pewien, że nie chciałeś tego robić.
Uwaga: Mój powyższy przykład zakłada, że uruchamiasz swój kod w przeglądarce, stąd window. Gdybyś był w innym środowisku, te zmienne byłyby dołączone do dowolnego kontekstu globalnego dla tego środowiska (tj. W Node.js, byłyby one dołączone do globalkontekstu globalnego tego środowiska).
Teraz możesz najpierw zadeklarować wszystkie swoje zmienne, a następnie przypisać im tę samą wartość, aby uniknąć problemu.
var moveUp, moveDown, moveLeft, moveRight, mouseDown, touchDown;
moveUp = moveDown = moveLeft = moveRight = mouseDown = touchDown = false;
Krótko mówiąc, oba sposoby działałyby dobrze, ale pierwszy sposób może potencjalnie wprowadzić do kodu zgubne błędy. Nie popełniaj grzechu zaśmiecania globalnej przestrzeni nazw zmiennymi lokalnymi, jeśli nie jest to absolutnie konieczne.
Uwaga dodatkowa: Jak wskazano w komentarzach (i to nie tylko w przypadku tego pytania), jeśli skopiowana wartość nie była wartością pierwotną, ale obiektem, lepiej wiesz o kopiowaniu według wartości w porównaniu z kopiowaniem przez odniesienie. Przy przypisywaniu obiektów zamiast rzeczywistego obiektu kopiowane jest odniesienie do obiektu. Wszystkie zmienne będą nadal wskazywały na ten sam obiekt, więc każda zmiana jednej zmiennej zostanie odzwierciedlona w innych zmiennych i spowoduje duży ból głowy, jeśli zamierzałeś skopiować wartości obiektu, a nie odniesienie.