Код:
<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>
Обратите внимание на лишнюю запятую в объявлении массива.
Приведенный выше код дает разные результаты для разных браузеров:
Safari: 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 и Konrad Rudolph за их входные данные.