我发现自己总是在写:
console.log(window.location.href);
想都没想。 SO上的大部分答案也是这样写的。我有什么理由不能写:
location.href
因为 location
是窗口级别的对象?这是否存在任何跨浏览器兼容性问题?
澄清一下:我知道有 document.location
- 这不是这个问题的内容。这是关于仅使用 location
与跨浏览器使用 window.location
是否有任何区别。
最佳答案
有一些不同。
在全局范围内,它们之间绝对没有区别,但在其他情况下你可能会遇到麻烦:
function () {
var location = { 'href' : '123' } ;
console.log(window.location.href) // actual url
console.log(location.href) // '123'
}
这是因为如果你写 location 而没有加上 window 前缀,它会遍历每个作用域以找到一个名为 location 的变量。最终它会在窗口中找到它,除非另一个范围也声明了一个。显然反之亦然:
function () {
var window = { 'location' : { 'href': '123' } };
console.log(window.location.href) // '123'
console.log(location.href) // actual url
}
我个人更喜欢在全局变量前加上 window,因为这样我可以立即知道它们是全局的,还因为当我找到一个没有以 window 为前缀的全局变量时,我知道这是一个缺少 var 的拼写错误,但是这纯粹是个人喜好。
关于javascript - 仅使用位置与跨浏览器使用 window.location 有什么区别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19423513/