这两行之间有区别吗?
var url = "http://www.google.com/";
window.location = url;
window.location.replace(url);
这两行之间有区别吗?
var url = "http://www.google.com/";
window.location = url;
window.location.replace(url);
Answers:
window.location
您可以(或应该能够)单击“上一步”并返回到当前页面,从而在历史记录中添加一项。
window.location.replace
替换当前的历史记录项目,因此您将无法返回到该项目。
assign(url)
:通过提供的URL加载文档。
replace(url)
:用提供的URL上的文档替换当前文档。与该assign()
方法的不同之 处在于,使用replace()
当前页面后将不会保存在会话历史记录中,这意味着用户将无法使用“后退”按钮导航到该页面。
哦,一般来说:
window.location.href = url;
被青睐:
window.location = url;
window.location.href
受到青睐window.location
?
window.location.replace(URL)
在哪里使用与当前URL完全相同的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
window.location.href
over时window.location
,您忘记了问题实际上是在要求这些和window.location.replace()
TLDR; use location.href or better use window.location.href;
TLDR是这一行。剩下的就是“答案”。
mystring = location.href = "#/some/spa/route"
。此外,许多语言会以某种方式允许(隐式)类型转换。归根结底,javascript是一种动态类型化的语言,在其上放上类型概念,并说不好是毫无意义的。
console
或遮挡该怎么办window
-现在您遇到了一个更大的问题。