код:
<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>
Обратите внимание на дополнительную запятую в объявлении массива. Приведенный выше код дает разные выходы для различных браузеров:
Сафари: 5
Firefox: 5
IE: 6
Дополнительная запятая в массиве игнорируется Safari и FF, в то время как IE рассматривает ее как еще один объект в массиве.
В каком-то поиске я нашел разные мнения о том, какой ответ правильный. Большинство людей говорят, что IE правильный, но затем Safari также делает то же самое, что Firefox. Я не тестировал это в других браузерах, таких как Opera, но я предполагаю, что есть расхождения.
Мои вопросы:
я. Какой из них правильный?
Изменить: По общему мнению (и рекомендациям ECMAScript) мы предполагаем, что IE снова виноват.
II. Есть ли какие-либо другие особенности браузера Javascript, о которых я должен опасаться?
Изменить: Да, есть множество особенностей Javascript. www.quirksmode.org - хороший ресурс для того же самого.
III. Как избежать таких ошибок?
Изменить: используйте JSLint для проверки вашего javascript. Или используйте некоторые внешние библиотеки. Или дезинфицируйте свой код.
Благодаря DamienB, JasonBunting, John и Конрад Рудольф за их вклад.