javascript - 仅使用位置与跨浏览器使用 window.location 有什么区别吗

标签 javascript javascript-objects window.location

我发现自己总是在写:

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/

相关文章:

javascript - 使用 window.location.replace 但页面仍在浏览器内存中

javascript 查询字符串 > window.location.search.substring > 使用 # 代替 ?开始查询字符串

Javascript 属性访问速度 : difference var. 属性与 var ["property"]?

javascript - NodeJS fs.open 在现有文件上失败(不是路径问题)

javascript - 在将属性分配给 JavaScript 中的对象之前验证/预处理属性

javascript - 循环遍历两个对象数组以将匹配值推送到新数组在 React 中不起作用,但在 JS Fiddle 中起作用

javascript位置搜索url中的多个查询参数

javascript - 正则表达式匹配重复数字而不排序

javascript - jQuery:fadeIn() 对我不起作用,语法错误?

javascript - 如何设置基础对象的默认值?