Ну я же выше объяснил.
|
Там написано, что так сделано в ECMA и что все как зомби должны повторять, я же хочу понять, почему в ECMA так сделали. На мой взгляд, методы числовых массивов должны работать с ними именно как с числовыми массивами, а не как с ассоциативными, это довольно логично звучит, но в ECMA какая-то другая логика, вот ее я и хочу понять.
|
forEach/map/... перебирают элементы массива. В твоём примере в массиве только один элемент под индексом 5. Вот если бы ты написал
arr = [];
arr[0] = undefined;
arr[1] = undefined;
// ...
arr[4] = undefined;
arr[5] = 'TEXT';
alert(
arr.reduce(function(a, n) {
return a + n;
}, '')
);
Всё логично, перебираются элементы массива, если элемента нет, то нет. |
Цитата:
|
ну, в защиту Riim, можно сказать, что arr.length == 6
только это не логика, это соглашение ;) Разработчики решили, что в числовых массивах могут быть пропущены элементы |
Цитата:
if ( filter( el, i ) ) {
или такого
if(filter(el,i)){
я предпочту что-то типа
if( filter(el, i) ){
|
А надо бы
if (filter(el, i)) {
|
| Часовой пояс GMT +3, время: 09:13. |