Нет. IE неправильно интерпретирует одиночную запятую как запятую и добавляет ее к длине, когда это не нужно (ECMA-262 раздел 11.1.4).
Редактировать
Чтобы устранить эту путаницу, IE обрабатывает одну конечную запятую в литерале массива (неправильно) как исключение, что означает, что он увеличивает свойство длины массива , но не создает свойство . Другими словами, дано:
var a = [0,1,];
В IE a.length равен 3, но свойства a [2] нет. Поэтому, если подходящим решением является удаление только исключенных членов из конца массива (что, вероятно, является лучшим решением, если они представляют собой проблему), тогда:
function tidyTrailingElisions(array) {
var i = array.length;
while (!array.hasOwnProperty(--i)) {}
array.length = ++i;
return array;
}
удалит только исключенных членов из конца массива (то есть свойств, которые не существуют), не удалит их в другом месте и не будет тратить время на итерации по всему массиву ( что может привести к добавлению избранных участников как неопределенных). Чтобы добавить в Array.prototype:
Array.prototype.tidyTrailingElisions = function() {
var i = this.length;
while ( !this.hasOwnProperty(--i)) {}
this.length = ++i;
return this;
};
Обратите внимание, что именно так Array.prorotype.filter работает, он не выполняет итерацию по проверяемым элементам (он использует тест hasOwnProperty и удаляет все разрешенные члены как часть фильтрации массив).