JavaScript—当我声明一个名为';位置';,它会被发送到URL吗?
我刚刚遇到了有史以来最奇怪的事情 当我声明一个名为“location”的变量时,无论变量的值是什么,都会被发送到URLJavaScript—当我声明一个名为';位置';,它会被发送到URL吗?,javascript,Javascript,我刚刚遇到了有史以来最奇怪的事情 当我声明一个名为“location”的变量时,无论变量的值是什么,都会被发送到URL var location = 1; // Results in http://localhost:8000/1 var location = document.getElementById('element'); // Results in http://localhost:8000/[object%20HTMLSelectElement] 这仅在位置发生。如果我使用的是位
var location = 1;
// Results in http://localhost:8000/1
var location = document.getElementById('element');
// Results in http://localhost:8000/[object%20HTMLSelectElement]
这仅在位置发生。如果我使用的是位置
:
var location2 = 1;
// Nothing weird happens
我用的是Django。我检查了我的前端和后端代码,似乎没有任何冲突的名称
是什么导致了这种情况?位置
是窗口
和文档
对象的内置属性。但是,无需放置窗口。位置
,就可以访问它,这就是为什么您会注意到它已经有了特殊的含义。它存储URL。如果你改变它,它会改变URL;或者,如果您更改或读取其中一个属性(例如执行location.hash=“part-7”
),您可以更改或读取URL的部分内容或与之相关的内容
例如:
console.log(位置)
location
是一个窗口属性。将任何内容分配到位置时
将尝试重定向到该位置
可以重命名变量,使其不与任何具有特殊含义的窗口属性冲突
或者使其成为具有IIFE
(立即可调用函数表达式)的函数中的局部变量:
这是一个重复,现在你正在学习为什么全局变量是一个不好的理想位置已经是一个保留关键字了。啊,好的。我在这上面花了太长时间。谢谢。location
是一个主机对象,包含当前加载的页面的相关信息。请不要将保留关键字用作变量。
(function() {
var location = '';
})();