Một người bạn của tôi đã khám phá ra một số hành vi thú vị trong một số mã Javascript, mà tôi quyết định điều tra thêm.Một hàm lớn hơn một mảng?
Việc so sánh
(function (x) {return x*x;}) > [1,2,3]
lợi nhuận true
trong hầu hết các trình duyệt phổ biến (Firefox, Chrome, Opera và Safari) và false
trong IE9. Với tôi, không có kết quả logic nào so sánh này ngoài undefined
vì không có cách nào để nói rằng một hàm lớn hơn một mảng.
Đọc về điều này trong tiêu chuẩn ECMA-script, nó nói rằng các đối số thực tế của >
khi nó được sử dụng trên các đối tượng là kết quả của việc gọi hoạt động nội bộ ToNumber trên các đối số. Một số thử nghiệm và đọc thêm cho tôi biết rằng điều này không giống như việc áp dụng chuyển đổi loại như (Number) arg
. Đọc đặc điểm kỹ thuật, tôi có một thời gian khó khăn để tìm ra những gì đang xảy ra ở đây.
Mọi người có thể điền vào tôi những gì đang thực sự xảy ra ở đây không?
tất nhiên chức năng lớn hơn mảng, nó có thể tạo ra các mảng heckuvalotta ;-) –
Bạn chưa đọc đủ của spec được nêu ra. Toán tử '>' cũng có thể so sánh các chuỗi. – Pointy
@Pointy, thực sự. 'f' lớn hơn '1' (có nghĩa ẩn không?). –