Ніщо не заважає вам робити вищезгадане, але тримайтесь!
Є кілька готчей. Призначення в 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)))));
Мимоволі, ти щойно створив 5 глобальних змінних - я певно впевнений, що ти цього не хотів робити.
Примітка. Мій вище приклад передбачає, що ви запускаєте свій код у браузері, отже window. Якби ви опинилися в іншому середовищі, ці змінні приєднуються до будь-якого глобального контексту, який би був для цього середовища (тобто в Node.js, він би приєднувався до globalякого є глобальним контекстом для цього середовища).
Тепер ви можете спочатку оголосити всі свої змінні, а потім призначити їх одному і тому ж значенню, і ви могли б уникнути проблеми.
var moveUp, moveDown, moveLeft, moveRight, mouseDown, touchDown;
moveUp = moveDown = moveLeft = moveRight = mouseDown = touchDown = false;
Якщо коротко розповісти, обидва способи спрацювали б чудово, але перший спосіб потенційно міг би ввести деякі згубні помилки у ваш код. Не вчиняйте гріх засмічувати глобальний простір імен локальними змінними, якщо це зовсім не потрібно.
Sidenote: Як зазначалося в коментарях (і це не лише у випадку з цим питанням), якщо скопійоване значення, про яке йдеться, було не примітивним значенням, а натомість об'єктом, ви краще знаєте копію за значенням проти копіювання за посиланням. Щоразу при призначенні об'єктів посилання на об'єкт копіюється замість фактичного об'єкта. Усі змінні все одно вказуватимуть на один і той же об’єкт, тому будь-яка зміна однієї змінної відображатиметься в інших змінних і спричинятиме вам головний біль, якщо ваш намір полягав у копіюванні об'єктних значень, а не посилань.