引言
在网页开发中,我们经常需要实现“返回上一页”的功能。通常会看到两种写法:history.back() 和 window.history.back()。它们看起来非常相似,但到底有没有区别?本文将为你详细解答。
history.back() 是什么?
history.back() 是浏览器 History API 的一部分,用于加载历史记录中的前一个页面(即后退)。
// 示例:点击按钮返回上一页
<button onclick="history.back()">返回上一页</button>
window.history.back() 又是什么?
实际上,history 对象是 window 对象的属性。因此,history.back() 本质上就是 window.history.back() 的简写形式。
// 完整写法
window.history.back();
// 简写(效果完全相同)
history.back();
两者有区别吗?
在绝大多数浏览器环境中,没有实际功能上的区别。因为全局作用域下,history 默认指向 window.history。
不过,在某些特殊上下文(如 Web Worker、严格模式下的非全局作用域)中,直接使用 history 可能会报错,此时应使用 window.history 以确保兼容性。
最佳实践建议
- 在普通网页开发中,使用
history.back()更简洁。 - 在模块化或严格作用域代码中,推荐使用
window.history.back()以避免潜在错误。 - 也可以使用
history.go(-1)实现相同效果。