Если вы находитесь в глобальном масштабе (и у меня есть догадка), то нет локальных переменных, а var
ничего не делает. Таким образом, location
равен this.location
, а this == window
... вы можете видеть, что это происходит. Попробуйте в консоли: var location = "http://example.com"
; или, для менее наглядного примера, var foo = 17; console.log(window.foo);
(Примечание: я не уверен на 100%, так как это было некоторое время, когда я написал расширение Chrome и не знаю, факт, что вы находитесь в глобальном контексте, но это единственное объяснение, которое соответствует фактам, о которых я могу думать.)
Чтобы исправить это, измените имя своей переменной или, еще лучше, внесите неглобальный контекст; например .:
(function() {
var location = window.location; // does not blow up
})();
или что то же самое
function pleaseDontBlowUp() {
var location = window.location; // does not blow up
}
pleaseDontBlowUp();