Không có gì ngăn cản bạn làm những điều trên, nhưng giữ vững!
Có một số vấn đề. Bài tập trong Javascript là từ phải sang trái để khi bạn viết:
var moveUp = moveDown = moveLeft = moveRight = mouseDown = touchDown = false;
nó có hiệu quả dịch sang:
var moveUp = (moveDown = (moveLeft = (moveRight = (mouseDown = (touchDown = false)))));
có hiệu quả dịch sang:
var moveUp = (window.moveDown = (window.moveLeft = (window.moveRight = (window.mouseDown = (window.touchDown = false)))));
Vô tình, bạn vừa tạo 5 biến toàn cục - điều mà tôi khá chắc chắn là bạn không muốn làm.
Lưu ý: Ví dụ trên của tôi giả sử bạn đang chạy mã của mình trong trình duyệt window. Nếu bạn ở trong một môi trường khác, các biến này sẽ gắn với bất kỳ bối cảnh toàn cầu nào xảy ra với môi trường đó (ví dụ, trong Node.js, nó sẽ gắn với globalbối cảnh toàn cầu cho môi trường đó).
Bây giờ trước tiên bạn có thể khai báo tất cả các biến của mình và sau đó gán chúng cho cùng một giá trị và bạn có thể tránh được vấn đề.
var moveUp, moveDown, moveLeft, moveRight, mouseDown, touchDown;
moveUp = moveDown = moveLeft = moveRight = mouseDown = touchDown = false;
Tóm lại, cả hai cách đều hoạt động tốt, nhưng cách đầu tiên có khả năng giới thiệu một số lỗi nguy hiểm trong mã của bạn. Đừng phạm tội khi xả rác không gian tên toàn cầu bằng các biến cục bộ nếu không thực sự cần thiết.
Sidenote: Như đã chỉ ra trong các bình luận (và điều này không chỉ trong trường hợp của câu hỏi này), nếu giá trị được sao chép trong câu hỏi không phải là giá trị nguyên thủy mà thay vào đó là một đối tượng, bạn nên biết về sao chép theo giá trị so với sao chép bằng tham chiếu. Bất cứ khi nào gán đối tượng, tham chiếu đến đối tượng được sao chép thay vì đối tượng thực tế. Tất cả các biến vẫn sẽ trỏ đến cùng một đối tượng, vì vậy mọi thay đổi trong một biến sẽ được phản ánh trong các biến khác và sẽ khiến bạn đau đầu nếu ý định của bạn là sao chép các giá trị đối tượng chứ không phải tham chiếu.