Разъяснение о JavaScript для ... в нотации - PullRequest
0 голосов
/ 19 марта 2012

х здесь число? Так используется в разделе person[x] ниже. Как это работает, я так потерян:

var person={fname:"John",lname:"Doe",age:25}; 
var x;

for (x in person)
{
document.write(person[x] + " ");
}

Я ценю любые советы или рекомендации.

Ответы [ 4 ]

3 голосов
/ 19 марта 2012

Нет, x - это не число.Это будет иметь место только в том случае, если вы перебираете Array, и в этом случае x будет числовым индексом элемента.В этом случае это будет строка, поскольку объекты JavaScript на самом деле являются ассоциативными массивами (индексируемыми строками).Это будет имя каждого из полей в объекте:

for (var x in person) {
    document.write(x + ' = ' + person[x]);
}

Должен вывести:

fname = John
lname = Doe
age = 25
2 голосов
/ 19 марта 2012

Забудьте о for (key in obj). Ссылаясь на одного выдающегося педагога здесь:

Все знают, что вам следует перебирать ключи объекта, а не сам объект.

Таким образом, правильный способ итерации по объектам:

var keys = Object.keys(obj); // array of keys 

for (var i = 0, len = keys.length; i < len; i += 1) {
    var item = obj[keys[i]];
    /* ... */
}
1 голос
/ 19 марта 2012

Адель, ты должен понимать основную структуру данных.

`

1> В приведенном выше фрагменте кода "персона" не является массивом, это словарь или хеш-таблицы (поэтому х не является числом). Это массив пар ключ: значение. См. http://en.wikipedia.org/wiki/Associative_array

2> «Словари / Ассоциативные массивы» повторяются по ключам. поэтому код for(x in person) даст вам массив ключей, а не число, которое мы ожидаем в массиве iteration.try for(x in person){console.log(x);}

1 голос
/ 19 марта 2012

Для ... in перебирает перечисляемые свойства объекта.Я бы предложил прочитать страницу MDN для ... в для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...