Code:Javascript của trình duyệt Quirks - array.Length
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Unusual Array Lengths!</title>
<script type="text/javascript">
var arrayList = new Array();
arrayList = [1, 2, 3, 4, 5, ];
alert(arrayList.length);
</script>
</head>
<body>
</body>
</html>
Chú ý các dấu phẩy trong khai báo mảng. Đoạn mã trên sẽ cho kết quả đầu ra khác nhau cho các trình duyệt khác nhau:
Safari: 5
Firefox: 5
IE: 6
Dấu phẩy thêm trong mảng đã được bỏ qua bởi Safari và FF trong khi IE coi nó như một đối tượng khác trong mảng.
Trên một số tìm kiếm, tôi đã tìm thấy ý kiến khác nhau về câu trả lời nào là chính xác. Hầu hết mọi người nói rằng IE là chính xác nhưng sau đó Safari cũng làm điều tương tự như Firefox. Tôi chưa thử nghiệm điều này trên các trình duyệt khác như Opera nhưng tôi cho rằng có sự khác biệt.
Câu hỏi của tôi:
i. Điều nào là đúng?
Chỉnh sửa: Theo sự đồng thuận chung (và nguyên tắc ECMAScript), chúng tôi giả định rằng IE lại có lỗi.
ii. Có bất kỳ trình duyệt Javascript nào khác mà tôi nên cảnh giác không?
Chỉnh sửa: Có, có vô số câu hỏi Javascript. www.quirksmode.org là một tài nguyên tốt cho cùng.
iii. Làm cách nào để tránh các lỗi như vậy?
Chỉnh sửa: Sử dụng JSLint để xác thực javascript của bạn. Hoặc, sử dụng một số bên ngoài libraries. Hoặc, sanitize mã của bạn.
Nhờ DamienB, JasonBunting, John và Konrad Rudolph vì những đóng góp của họ.
Cảm ơn bạn, cảm ơn bạn, cảm ơn bạn!!! Một dấu phẩy thừa ngu ngốc đã khiến cho IE8 hoạt động khác với FireFox và nó đang đẩy tôi lên tường cố gắng tìm ra nó! – Tom
Cảm ơn bạn đã đặt câu hỏi này, đã giúp tôi giải quyết vấn đề tôi gặp phải với IE không xử lý một mảng như mong đợi. :) –
Cảm ơn vì điều này. Tôi đã nhận được một lỗi JavaScript IE8 khi tôi kiểm tra .length của một phần tử mảng. Và nguyên nhân là một dấu phẩy phụ trong khai báo mảng. – jamesnotjim