name - зарезервировано?

Provokator86

Мой дом здесь!
Регистрация
27 Май 2012
Сообщения
365
Реакции
237
В общем возник ещё вопрос.
Есть код:
Код:
var name = new Array("Igor", "Andrey", "Oleg");
document.write(name[1]);
document.write("<br>")
var names = new Array("Igor", "Andrey", "Oleg");
document.write(names[1]);
Который выводит:
g
Andrey
Вопрос банален: почему?:)
 
Где-то совпадение переменной происходит, ошибки никакой нету и не может быть, только Вы забыли поставить точку с запятой после вывода br.
Выполнение вашего кода: Для просмотра ссылки Войди или Зарегистрируйся
 
Где-то совпадение переменной происходит, ошибки никакой нету и не может быть, только Вы забыли поставить точку с запятой после вывода br.
Выполнение вашего кода: Для просмотра ссылки Войди или Зарегистрируйся
Прощения. Проверю. Данный результат выдал в sololearns приложении. Но переменных name там нет...
 
Где-то совпадение переменной происходит, ошибки никакой нету и не может быть, только Вы забыли поставить точку с запятой после вывода br.
Выполнение вашего кода: Для просмотра ссылки Войди или Зарегистрируйся
Проверил в консоли хрома, такое же поведение как у ТС.
Причина такого поведения в том, что name имеет тип стринг
Код:
console.log(typeof(name))
string
И как минимум в консоле хрома оно зарезервировано. Для проверки откройте пустую вкладку, для неё откройте консоль и выполните:
Код:
console.log(typeof(name));

console.log(typeof(someundefname));
Разница заметна невооруженным глазом ;)

Теперь, когда страсть к научному методу тыка удовлетворена, можно и RTFM:
Для просмотра ссылки Войди или Зарегистрируйся
 
И как минимум в консоле хрома оно зарезервировано.
На самом деле name во всех браузерах зарезервировано :)
Код:
'name' in window // вернет в консоли true
Говорить, что name вот прямо зарезервировано - неправильно. Всё что происходит - браузер определяет свойство name глобального объекта window. Для просмотра ссылки Войди или Зарегистрируйся
Ошибка ТС в том, что он не разобрался с замыканиями в JavaScript.
Достаточно обернуть код ТС в функцию и всё начинает работать, как и задумано:
Код:
var _ = function(){
   var name = new Array("Igor", "Andrey", "Oleg");
   document.write(name[1]);
   document.write("<br>")
   var names = new Array("Igor", "Andrey", "Oleg");
   document.write(names[1]);
}
_();
 
Назад
Сверху