ฉันเพิ่งค้นพบว่า2 == [2]
ใน JavaScript เมื่อมันปรากฏออกมาการเล่นโวหารนี้มีผลที่น่าสนใจสองประการ
var a = [0, 1, 2, 3];
a[[2]] === a[2]; // this is true
ในทำนองเดียวกันงานต่อไปนี้:
var a = { "abc" : 1 };
a[["abc"]] === a["abc"]; // this is also true
แม้กระทั่งคนแปลกหน้าก็ใช้งานได้เช่นกัน:
[[[[[[[2]]]]]]] == 2; // this is true too! WTF?
พฤติกรรมเหล่านี้ดูเหมือนจะสอดคล้องกันในทุกเบราว์เซอร์
ความคิดใดว่าทำไมนี่คือคุณสมบัติภาษา?
นี่คือผลที่ตามมาอย่างบ้าคลั่งของ "ฟีเจอร์" นี้:
[0] == false // true
if ([0]) { /* executes */ } // [0] is both true and false!
var a = [0];
a == a // true
a == !a // also true, WTF?
ตัวอย่างเหล่านี้ถูกค้นพบโดย jimbojw http://jimbojw.comชื่อเสียงเช่นเดียวกับwalkingeyerobot
+"2"
ยังเป็นหมายเลข 2