2013-07-27 2 views
0
livingCats = {"bob": true, "bo": false}; 
for(var cat in livingCats) 
    print(cat); 

Это выводит все имена в объекте, является ли оно истинным или нет. Я не помню, чтобы определить кошку как что-либо в объекте, так почему мы можем использовать cat для печати каждого имени? Можно ли обменять кошку на что угодно, и это не имеет значения?Объясните синтаксис (var cat in livingCats)?

Подробнее о синтаксисе использования var и in для печати ключей.

из ответов и от чтения в документации, что переменная cat не была определена, но является перечислимой, поэтому ее можно использовать для in..in. Кошку можно заменить чем угодно.

+4

Да, 'cat' может быть любым, и это только переменная. [Проверить MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in). –

+0

http://www.ecma262-5.com/ELS5_Section_12.htm#Section_12.6.4 – Incognito

ответ

0

Вы не указали cat как ничего в объекте. Вы определили его как переменную и сделали это в заявлении for.

Это приводит к тому, что JavaScript присваивает каждому свойству свойства livingCats объект cat, и каждый раз он запускает код внутри вашего оператора for. Он не смотрит на значение свойства, он просто присваивает имя свойства cat.

Вашего конкретный for цикл эквивалентен этот код:

print("bob"); 
print("bo"); 

Хотя обратите внимание, что после того, как цикл закончился, cat все равно будут иметь последнее значение, присвоенное ему в цикле.

+2

Эквивалент в реализациях JavaScript, которые сохраняют порядок свойств, то есть. – icktoofay

+0

@icktoofay: yup. –

+0

, который ... все, даже если не соблюдается спецификацией – Ven

0

Эта переменная в for() может быть любой, это просто представление общих ключей в объекте.

Смежные вопросы