Tidak ada yang menghentikan Anda untuk melakukan hal di atas, tetapi tunggu sebentar!
Ada beberapa gotcha. Penugasan dalam Javascript adalah dari kanan ke kiri sehingga ketika Anda menulis:
var moveUp = moveDown = moveLeft = moveRight = mouseDown = touchDown = false;
secara efektif diterjemahkan menjadi:
var moveUp = (moveDown = (moveLeft = (moveRight = (mouseDown = (touchDown = false)))));
yang secara efektif diterjemahkan menjadi:
var moveUp = (window.moveDown = (window.moveLeft = (window.moveRight = (window.mouseDown = (window.touchDown = false)))));
Secara tidak sengaja, Anda baru saja membuat 5 variabel global - sesuatu yang saya cukup yakin tidak ingin Anda lakukan.
Catatan: Contoh saya di atas mengasumsikan Anda menjalankan kode Anda di browser, karenanya window. Jika Anda berada di lingkungan yang berbeda, variabel-variabel ini akan melekat pada apa pun konteks global terjadi untuk lingkungan itu (yaitu, di Node.js, itu akan melampirkan globalyang merupakan konteks global untuk lingkungan itu).
Sekarang Anda bisa mendeklarasikan semua variabel Anda dan kemudian menetapkannya ke nilai yang sama dan Anda bisa menghindari masalah.
var moveUp, moveDown, moveLeft, moveRight, mouseDown, touchDown;
moveUp = moveDown = moveLeft = moveRight = mouseDown = touchDown = false;
Singkatnya, kedua cara akan bekerja dengan baik, tetapi cara pertama berpotensi memperkenalkan beberapa bug yang merusak dalam kode Anda. Jangan melakukan dosa mengotori namespace global dengan variabel lokal jika tidak benar-benar diperlukan.
Sidenote: Seperti yang ditunjukkan dalam komentar (dan ini bukan hanya dalam kasus pertanyaan ini), jika nilai yang disalin bukanlah nilai primitif melainkan sebuah objek, Anda lebih baik tahu tentang menyalin berdasarkan nilai vs menyalin dengan referensi. Setiap kali menetapkan objek, referensi ke objek disalin bukan objek yang sebenarnya. Semua variabel masih akan menunjuk ke objek yang sama sehingga setiap perubahan dalam satu variabel akan tercermin dalam variabel lain dan akan menyebabkan Anda sakit kepala besar jika niat Anda adalah untuk menyalin nilai objek dan bukan referensi.