Các yếu tố cơ bản như sau:
0==0
Đây là true
, có thể bị cưỡng chế để 1
.
a >> b
Toán tử dịch chuyển phải. Trong trường hợp này, nó chỉ được sử dụng ở đầu biểu thức là 0 >> 1
để đánh giá là 0
.
a^b
Bitwise XOR. Cả hai cách sử dụng ở trên đều có a
hoặc b
là 0
và do đó kết quả là toán hạng khác 0, bị ép buộc thành một số nguyên.
[a] + [b]
Chuỗi bổ sung a
và b
, đánh giá để "ab"
; nếu cả hai a
và b
là số (ví dụ [0]+[1]
kết quả có thể bị cưỡng chế vào một số.
[a] * [b]
Phép nhân có thể được thực hiện trên mảng yếu tố duy nhất, rõ ràng. Vì vậy, đây là tương đương với a*b
.
Cuối cùng,
a << b
Nhà điều hành trái ca; cho số nguyên dương này nhân lên hiệu quả bằng 2 với công suất b
. Trong biểu thức ở trên, điều này được sử dụng với b = 0
, do đó kết quả là a
, bị ép buộc thành một số nguyên.
Nếu bạn áp dụng đúng thứ tự các hoạt động, bạn sẽ nhận được [2] * [21]
đánh giá là 42
.
Bắt đầu bằng cách mở bảng điều khiển JavaScript của bạn và xem những gì 'true + true' sẽ đánh giá. – Matt
Nếu bạn biết về quyền ưu tiên của toán tử thì bạn có thể ghi lại điều này thành nhiều dòng và thực hiện theo một thao tác tại một thời điểm. – nhgrif
'Tại sao câu trả lời là 42? 'Tôi đã có một chương trình làm việc để tìm ra câu hỏi là gì, nhưng phải mất khá nhiều thời gian để chạy ... – admdrew