Самый странный литерал массива javaScript - PullRequest
1 голос
/ 19 февраля 2012

, когда я был в моем проекте, я случайно назвал массив "name" следующим образом

var name = ["abc","abc","abc","abc"];

это вызвало несоответствие в моем проекте, потому что, как я и ожидал, name [0] выдаст первый abc, HOWEVER !, он даст мне первое письмо a !!! Я пробовал этот массив в консоли Firefox, и он всегда давал мой массив вместо строки, которую я получил, набрав ее в консоли Chrome. Поэтому я переименовал переменную в Chrome еще раз

var foo = ["abc","abc","abc","abc"]; 

И foo [0] дал мне первый «abc». Не стесняйтесь попробовать это, я предполагаю, что есть проблема с именованием "имя", но понятия не имею почему. Спасибо

Ответы [ 2 ]

10 голосов
/ 19 февраля 2012

На верхнем уровне var name совпадает с window.name.

window.name зарезервировано, поэтому Chrome преобразует его в строку неявно.

Обратите внимание, что преобразование массива в строку просто разделяет его запятыми:

["abc","abc","abc","abc"].toString()

является:

"abc,abc,abc,abc"
2 голосов
/ 19 февраля 2012

Объект Window имеет свойство name , которое указывается следующим образом:

Атрибут имени объекта Window должен при получении возвращать текущее имя контекста просмотра, и, при настройке, устанавливать имя контекста просмотра в новое значение.

(акцент мой)

Таким образом, установка window.name, например, Выполнение var window = ... в глобальном контексте установит имя контекста просмотра с правой стороны. Поскольку имя должно быть строкой, сеттер преобразует его в единицу.

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