Bạn có thể khởi tạo hai biến thành cùng một giá trị cùng một lúc, kinda:
var foo, bar; foo = bar = 10;
Nhưng không có cơ chế dễ dàng tương tự để thêm, ví dụ, 5 cho cả hai foo
và bar
cùng một lúc. Tất nhiên, nó đủ đơn giản để làm:
foo += 5; // foo is now 15 bar += 5; // bar is now 15
Nhưng đó là hai hoạt động.
Bí quyết là:
foo += -bar + (bar += 5); // foo and bar are now 15
Bạn có thể sẽ không bao giờ cần điều này, thật thú vị khi biết nó có thể.
Cảm ơn Matheus Avellar vì đã gửi mẹo nhỏ này về tâm hồn, người cũng giải thích:
Giá trị
-bar
được phân tích cú pháp và trở thành giá trị âm củabar
, vì vậy -10. Sau đó,a += 5
chạy và đặtbar
thành 15 (10 + 5). Cuối cùng, nó tổng hợp cả hai giá trị (-10 + 15) và cung cấp cho bạn sự khác biệt giữa cũbar
và mớibar
, là 15.