2013-06-15 2 views
7

я создаю очень простой объект в JavaScript и сквозной через его свойство, отображая имя свойства:Итерация через свойство объекта производит различные результаты в разных браузерах

var name = { 
       'A': 'DataA', 
       'B': 'DataB', 
       'C': 'DataC', 
       'D': 'DataD', 
       'E': 'DataE' 
      } 

for (var propName in name) { 
    document.getElementById('result').innerHTML += propName + ' ' 
} 

В IE и FireFox он производит ожидаемый результат:

A B C D E 

Но в Chrome же код производит

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 

Любая идея Зачем? Имеет ли значение ключевое слово name в Chrome?

+0

[Вы уверены?] (Http://jsfiddle.net/cqvrF/) – zerkms

+0

JSFiddle по какой-то причине не показывает эффект, но когда я открываю HTML-страницу с кодом в браузере напрямую - это происходит –

+3

Chrome doesn Кажется, это нравится, когда вы используете его как глобальное (на объекте окна есть свойство name). Просто запустите его внутри функции. – zdyn

ответ

4

Chrome, кажется, не нравится, когда вы используете его в качестве глобальной переменной (есть также имя объекта на объект окна). Просто запустите его внутри функции.

-5

попробовать

for (var propName in name) { 
    document.getElementById('result').innerHTML += (propName + ' '); 
} 
+2

Как вы думаете, что изменилось бы (для * рабочего * кода)? Пожалуйста, взгляните на https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence перед тем, как удалить свой ответ :-) – zerkms

+0

Дело в том, что при отладке страницы 'propName 'действительно показывает эти числа –

+0

Я не собираюсь удалять это, поскольку он делает разницу –

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