Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   читабельность, какая она бывает (https://javascript.ru/forum/misc/7491-chitabelnost-kakaya-ona-byvaet.html)

Kolyaj 05.02.2010 09:46

Ну я же выше объяснил.

Riim 05.02.2010 10:07

Там написано, что так сделано в ECMA и что все как зомби должны повторять, я же хочу понять, почему в ECMA так сделали. На мой взгляд, методы числовых массивов должны работать с ними именно как с числовыми массивами, а не как с ассоциативными, это довольно логично звучит, но в ECMA какая-то другая логика, вот ее я и хочу понять.

Kolyaj 05.02.2010 10:13

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 06.02.2010 08:10

Цитата:

Сообщение от Kolyaj
В твоём примере в массиве только один элемент под индексом 5

если в этой фразе слово "массив" заменить на объект/ассоциативный массив/range-объект/коллекция, то я бы согласился с ней, однако пока речь идет о числовом массиве, элементов шесть и не меньше.

x-yuri 07.02.2010 01:55

ну, в защиту Riim, можно сказать, что arr.length == 6

только это не логика, это соглашение ;) Разработчики решили, что в числовых массивах могут быть пропущены элементы

x-yuri 20.02.2010 03:02

Цитата:

Сообщение от Octane
ненавижу, когда скобочки изнутри пробелами отбивают

кстати, нету у меня такого правила. Сложно объяснить, но вместо такого
if ( filter( el, i ) ) {

или такого
if(filter(el,i)){

я предпочту что-то типа
if( filter(el, i) ){

Kolyaj 20.02.2010 09:35

А надо бы
if (filter(el, i)) {


Часовой пояс GMT +3, время: 13:40.