Cuộc nói chuyện 'Wat' cho CodeMash 2012 về cơ bản chỉ ra một vài điều kỳ quái với Ruby và JavaScript.
Tôi đã tạo một JSFiddle về kết quả tại http://jsfiddle.net/fe479/9/ .
Các hành vi dành riêng cho JavaScript (như tôi không biết Ruby) được liệt kê bên dưới.
Tôi đã tìm thấy trong JSFiddle rằng một số kết quả của tôi không tương ứng với những kết quả trong video và tôi không chắc tại sao. Tuy nhiên, tôi tò mò muốn biết cách JavaScript xử lý hoạt động đằng sau hậu trường trong từng trường hợp.
Empty Array + Empty Array
[] + []
result:
<Empty String>
Tôi khá tò mò về +
toán tử khi được sử dụng với các mảng trong JavaScript. Điều này phù hợp với kết quả của video.
Empty Array + Object
[] + {}
result:
[Object]
Điều này phù hợp với kết quả của video. Những gì đang xảy ra ở đây? Tại sao đây là một đối tượng. Người +
điều hành làm gì?
Object + Empty Array
{} + []
result:
[Object]
Điều này không phù hợp với video. Video cho thấy kết quả là 0, trong khi tôi nhận được [Object].
Object + Object
{} + {}
result:
[Object][Object]
Điều này cũng không khớp với video và làm thế nào để xuất ra một kết quả biến trong hai đối tượng? Có lẽ JSFiddle của tôi sai.
Array(16).join("wat" - 1)
result:
NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
Làm wat + 1 kết quả trong wat1wat1wat1wat1
...
Tôi nghi ngờ đây chỉ là hành vi đơn giản khi cố gắng trừ một số từ một chuỗi kết quả trong NaN.
Array(16).join("wat" - 1) + " Batman!"
{} + {}
.