Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   arguments.length и for-in (https://javascript.ru/forum/misc/41595-arguments-length-i.html)

shau-kote 20.09.2013 19:12

arguments.length и for-in
 
Всем доброго времени суток.

Объясните, пожалуйста, следующий момент.
Насколько я понял, arguments - объект с полями 1, ... , n, length.

Но тогда почему такой код:
function f() {
        var out = '';
        for (var x in arguments) 
            out += x + ': ' + arguments[x] + '; ';
        alert(out);
    }

    f('a', 'b', 'c');

выводит "0: a; 1: b; 2: c; ".

Куда пропадает поле length?.. :-?

Яростный Меч 20.09.2013 19:23

вероятно, оно неперечислимое

danik.js 21.09.2013 02:46

Смотри http://learn.javascript.ru/descripto...рипторы
Добавлю что встроенные объекты имеют какие-то костыльные, магические "дескрипторы", так что Object.getOwnPropertyDescriptor может вернуть некорректный дескриптор. По крайней мере в WebKit я такое наблюдал

shau-kote 21.09.2013 09:28

А, for-in перебирает только enumerable поля.
Тогда всё логично, да.
Меня просто сбило с толку описание for-in в учебнике:
Цитата:

Для перебора всех свойств из объекта используется цикл по свойствам for..in.
Спасибо за разъяснение.


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