Gần đây tôi đã phát hiện ra rằng 2 == [2]
trong JavaScript. Hóa ra, trò hề này có một vài hậu quả thú vị:
var a = [0, 1, 2, 3];
a[[2]] === a[2]; // this is true
Tương tự, các công việc sau:
var a = { "abc" : 1 };
a[["abc"]] === a["abc"]; // this is also true
Ngay cả người lạ vẫn còn, điều này cũng hoạt động:
[[[[[[[2]]]]]]] == 2; // this is true too! WTF?
Những hành vi này có vẻ nhất quán trên tất cả các trình duyệt.
Bất cứ ý tưởng tại sao đây là một tính năng ngôn ngữ?
Dưới đây là những hậu quả điên rồ hơn của "tính năng" này:
[0] == false // true
if ([0]) { /* executes */ } // [0] is both true and false!
var a = [0];
a == a // true
a == !a // also true, WTF?
Những ví dụ này được tìm thấy bởi jimbojw http://jimbojw.com danh tiếng cũng như walkeyerobot .
+"2"
cũng là số 2.