window.location =和window.location.replace()有什么区别?

2020/10/08 00:01 · javascript ·  · 0评论

这两行之间有区别吗?

var url = "http://www.google.com/";
window.location = url;
window.location.replace(url);

window.location 您可以(或应该能够)单击“上一步”并返回到当前页面,从而在历史记录中添加一项。

window.location.replace 替换当前的历史记录项目,因此您将无法返回到它。

window.location

assign(url):通过提供的URL加载文档。

replace(url):用提供的URL上的文档替换当前文档。与该assign()方法的区别
在于,使用
replace()当前页面后,
该页面将不会保存在会话历史记录中,这意味着用户将无法使用“后退”按钮导航到该页面。

哦,一般来说:

window.location.href = url;

被青睐:

window.location = url;

TLDR;

使用location.href或更好地使用window.location.href;

但是,如果您阅读本文,将获得不可否认的证据。

事实是,可以使用,但是为什么要做可疑的事情。您应该走更高的道路,并按照可能的方式去做。

location = "#/mypath/otherside"
var sections = location.split('/')

这段代码在语法上,逻辑上,类型上都是完全正确的,您知道唯一的错误吗?

它有location而不是location.href

那这个呢

var mystring = location = "#/some/spa/route"

的值是mystring多少?没有任何测试真的有人知道吗?没有人知道这里到底会发生什么。天哪,我只是写了这篇文章,我什至不知道它的作用。location是一个对象,但是我正在分配一个字符串,它将通过字符串或通过位置对象。可以说应该如何实现这一点。您可以保证所有浏览器都将执行相同的操作吗?

我几乎可以猜到所有浏览器都会处理相同的问题。

var mystring = location.href = "#/some/spa/route"

如果将其放入打字稿中会怎么样呢,因为类型编译器会说这是一个对象,它会中断吗?

然而,这种对话比location对象本身要深得多这种转换意味着您想成为什么样的程序员?

如果您采用这种捷径,是的,今天可能还可以,明天就可以,地狱永远都可以,但是您现在是一个糟糕的程序员。这对您来说不好,它将使您失望。

将有更多的对象。将会有新的语法。

您可能定义了一个只接受一个字符串但返回一个对象的getter,最糟糕的部分是您会认为自己做对了一些事情,您可能认为自己对这种聪明的方法很聪明,因为这里的人使您误入歧途。

var Person.name = {first:"John":last:"Doe"}
console.log(Person.name) // "John Doe"

使用getter和setter方法,此代码实际上可以工作,但是仅仅因为它可以完成并不意味着这样做是“明智的”。

大多数编程的人都喜欢编程,也喜欢变得更好。在过去的几年中,我变得相当不错,学到了很多东西。我现在知道的最重要的事情,尤其是在编写库时,是一致性和可预测性。

做您可以持续做的事情。

+"2"<-这里的权利将字符串解析为数字。你应该使用它吗?还是应该使用parseInt("2")

那又如何var num =+"2"呢?

从您学到的知识,从stackoverflow的思想来看,我不太希望。

如果您开始遵循这两个词,那就是一致且可预测的。您将了解大量关于stackoverflow问题的正确答案。

让我向您展示如何获得回报。通常,我将其放置;在我编写的每行JavaScript上。我知道它更具表现力。我知道这更清楚。我遵守了规则。有一天我决定不去。为什么?因为有很多人告诉我不再需要它了,因此JavaScript可以不用它。所以我决定这样做。现在,因为我已经确定了自己作为程序员的身份(因为您应该喜欢掌握某种语言的成果),所以我写的东西很简单,我没有检查。我删除了一个逗号,并且我认为我不需要为删除一个逗号这样的简单事情重新测试。

我在es6和babel中写了类似的东西

var a = "hello world"
(async function(){
  //do work
})()

这段代码失败并花了很长时间才弄清楚。由于某种原因,它看到的是

var a = "hello world"(async function(){})()

隐藏在源代码中很深的地方告诉我“ hello world”不是一个函数。

为了更有趣,节点不显示已编译代码的源映射。

浪费了这么多愚蠢的时间。我还向某人介绍了ES6的出色表现,然后我不得不开始调试并演示ES6如何轻松自如。这不令人信服。

我希望这能回答您的问题。这是一个古老的问题,对于仍在学习中的下一代来说,更多。

当人们说这两种方法都没关系时,请问。更有经验的人会告诉你其他人。

如果有人覆盖位置对象该怎么办。他们将为较旧的浏览器提供填充。它将获得一些需要填充的新功能,并且您使用3年的代码将失败。

我的最后一个笔记需要深思。

编写干净,清晰,有目的的代码会为您的代码做一些无法正确或错误回答的事情。它的作用是使您的代码成为推动者。

您可以使用更多的东西插件,库,而不必担心代码之间的中断。

作为记录。

window.location.href

本文地址:http://javascript.askforanswer.com/window-location-hewindow-location-replaceyoushenmequbie.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!