我刚刚遇到过最奇怪的事情。
当我声明一个名为'location'的变量时,无论变量的值是什么,都会发送到URL。
var location = 1;
// Results in http://localhost:8000/1
var location = document.getElementById('element');
// Results in http://localhost:8000/[object%20HTMLSelectElement]
这仅适用于location
。如果我使用,请说locations
:
var location2 = 1;
// Nothing weird happens
我正在使用Django。我检查了我的前端和后端代码,似乎没有任何冲突的名称。
导致这种情况的原因是什么?
答案 0 :(得分:1)
location
是一个窗口属性。在为location
分配任何内容时,它会尝试重定向到该位置。
您可以重命名变量,使其不与任何具有特殊含义的窗口属性冲突。
或者使用IIFE
(立即调用函数表达式)使其成为函数内的局部变量:
(function() {
var location = '';
})();
答案 1 :(得分:0)
location
是window
和document
个对象的内置属性。但是,它可以在不放window.location
的情况下访问,这就是为什么你注意到它已经具有特殊含义的原因。它存储URL。如果你改变它,它会改变URL;或者,如果您更改或阅读其中一个属性(例如,执行location.hash="part-7"
),您可以更改或阅读部分网址或与其相关的内容。
例如:
console.log(location)
JavaScript中存在某些已经存在的变量。另一个例子是document
;或window
;等
您可以在此处详细了解location
:https://developer.mozilla.org/en-US/docs/Web/API/Location