Расположение глобально определено в Chrome 13 - PullRequest
0 голосов
/ 16 сентября 2011

Когда я набрал эту строку, я использовал Инструменты разработчика в Chrome 13:

var location = "Hello";

После нажатия клавиши Enter страница изменилась и выдала ошибку 404. В адресную строку теперь добавлено Hello к последнему адресу.

http://www.google.com/Hello

Клянусь, что в прошлом я набирал те же строки в Chrome, и у меня не было такой же проблемы. Я думал, что местоположение было в window.location.

Что-то изменилось, или я просто никогда не замечал этого раньше?

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

Совершенно нормально, что контекст в инструментах разработчика будет window. Наберите this и посмотрите, что написано. Это вероятно window.

Таким образом, при вводе:

var location = "Hello";

Вы пытаетесь переопределить переменную в глобальной области, которая уже существует. Глобальная область видимости в браузере - это объект window. Таким образом, location в глобальной области действия совпадает с window.location.

Попытка переопределить уже существующий объект (с помощью var) не является ошибкой в ​​javascript. Он просто игнорирует объявление var и выполняет присваивание. И, присваивая строку объекту местоположения, переходит на новую веб-страницу.

2 голосов
/ 16 сентября 2011

Chrome мог изменить свои правила видимости.Мне неясно, должен ли var на консоли рассматриваться как область окна или какая-то таинственная область консоли.

Если вы хотите создать переменную с именем location, вы должны создать безопасную область, например, используянепосредственная функция.Например,

(function(){
  var location = "hello";  // safe
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...