Javascript 使用href vs replace重定向到新页面

Javascript 使用href vs replace重定向到新页面,javascript,html,Javascript,Html,使用JS重定向到新页面时-何时使用location.replace()以及何时使用location.href。据我所知,如果我们使用location.replace,历史记录将不会被存储。但我应该在什么情况下这样做呢 从我的理解来看,window.location和window.location.href与MDN文档一样 location.href用于重定向和保留历史记录,与用户单击网站链接时相同 location.replace用于重定向但不保留历史记录的情况 window.location与

使用JS重定向到新页面时-何时使用
location.replace()
以及何时使用
location.href
。据我所知,如果我们使用
location.replace
,历史记录将不会被存储。但我应该在什么情况下这样做呢


从我的理解来看,
window.location
window.location.href
与MDN文档一样

location.href
用于重定向和保留历史记录,与用户单击网站链接时相同

location.replace
用于重定向但不保留历史记录的情况


window.location
window.location.href
不同。window.location是一个对象,而window.location.href是一个字符串。window.location.href是window.location对象的子元素

对于第二个问题,它们不同
window.location
是一个对象,
window.location.href
是一个字符串。这是一个JS特性,当在需要字符串的地方使用
window.location
时,默认情况下调用函数
window.location.toString()
,该函数返回
href
属性(取决于使用上下文)。本质上,它们具有相同的功能。您只是重复问题中已经说明的事实,问题是询问您是否希望保留历史记录的场景示例。使用
location.replace
的一个简单示例是,当您希望重定向到登录页面,并且希望用户无法单击返回时请参阅需要登录的页面。location.href的使用频率高于
location.replace
,这将要求您在登录时使用
location.replace
。这会打断后退按钮。这是个糟糕的主意。改为使用HTTP设置适当的缓存规则。@Quentin,这只是一个示例,看看location.href和location.replace之间有什么不同。在现实世界的应用程序中,这个特定于登录的案例是从服务器端处理的。最初的问题不是关于实际代码片段的具体情况。这只是要求解释,所以我认为一个案例就足以回答这个问题。不。这个问题非常明确地问“当我应该这样做的时候,会出现什么情况?”