0

我应该使用以下哪项将location对象分配给 javascript 中的局部变量?

var l = location;
var l = window.location;
var l = window.document.location;

为什么有这么多方法?有什么区别吗?

4

4 回答 4

3

我会使用window.location, 来帮助确保我真正谈论的是全局对象的属性,而不是碰巧被调用的某个局部变量location

W3C 规范说:

Window 接口的 location 属性必须返回该 Window 对象的 Document 的 Location 对象。

所以这两个确实是等价的(实际上是完全相同的对象)。

location恰好是 的简写window.location,只要location范围内没有其他变量。

于 2012-05-30T21:46:17.363 回答
3

它们都指向同一个对象。虽然,window.location更明确,跨浏览器兼容,并且可以防止与location在不同范围内命名的其他变量发生冲突。

为什么有这么多方法?

浏览器差异/过去时代的遗迹。

于 2012-05-30T21:46:53.760 回答
0

在 Web 浏览器中,window始终位于变量查找链的顶部。因此,全局变量x也是window.x。例如:

<script>
var x = 1;
window.alert(window.x);
</script>

会警觉1。同样,如果链中不再调用局部变量,location也将解析。window.locationlocation

于 2012-05-30T21:53:57.827 回答
-1

window.location 是 _top 位置。document.location 是当前的 html 页面位置

如果您在 iframe 中,则 iframe 的 document.location 会有所不同,因为 window.location 指的是父页面。

通过对此进行检查,您可以通过检查它们是否相同来打破框架。如果不打破未经授权的框架。或检查我的 i 框架的父页面是否正确,如果不重定向到正确的页面。

于 2012-05-30T21:49:59.587 回答