什么是[removed]的之间[removed].replace)之差=(?什么是[removed]

2019-05-08 18:54发布

有这两条线之间的差异?

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

Answer 1:

window.location adds an item to your history in that you can (or should be able to) click "Back" and go back to the current page.

window.location.replace replaces the current history item so you can't go back to it.

See window.location:

assign(url): Load the document at the provided URL.

replace(url):Replace the current document with the one at the provided URL. The difference from the assign() method is that after using replace() the current page will not be saved in session history, meaning the user won't be able to use the Back button to navigate to it.

Oh and generally speaking:

window.location.href = url;

is favoured over:

window.location = url;


Answer 2:

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这个代码将实际工作,但只是因为它可以做到的,并不意味着它是“WISE”这样做。

谁是编程爱心计划和爱大多数人变得更好。 在过去的几年里,我已经变得相当不错,学到很多东西。 我现在知道尤其是当你写图书馆最重要的是一致性和可预测性。

做的事情,你能够坚持这么做。

+"2" < -这里这个权利解析字符串到数字。 你应该使用它? 或者你应该使用parseInt("2")

怎么样var num =+"2"

从你所拥有的学习,从计算器我不太希望的头脑。

如果你开始以下2个字一致的和可预测的。 你会知道正确的答案,一吨的计算器上的问题。

让我告诉你这是如何不负有心人。 通常情况下,我把; 于JavaScript的每一行我写。 我知道这是更具表现力。 我知道这是更加清晰。 我按照我的规则。 有一天,我决定不这么做。 为什么? 因为很多人都告诉我,这是没有必要再和JavaScript没有它可以做。 所以我决定这样做。 现在,因为我已经确信我自己作为一个程序员的(你应该享受掌握一门语言的水果)我写的东西很简单,我没有检查它。 我删除一个逗号,我不认为我需要重新测试这么简单的东西去除一个逗号。

我写了一些与此类似在ES6和巴贝尔

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

此代码失败,并采取永远找出。 出于某种原因,它看到的是

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

深藏的源代码。它告诉我内的“hello world”是不是一个函数。

对于更多的乐趣节点不显示的transpiled代码的源代码映射。

浪费了太多愚蠢的时间。 我被介绍给别人,以及关于如何ES6是辉煌的,然后我不得不开始调试并演示如何ES6头痛自由和更好的。 不能令人信服的是它。

我希望这回答了你的问题。 这是一个老问题,它更对未来一代人谁仍在学习。

问题当人们说不要紧的工作方式无论是。 机会是一个更聪明更经验的人会告诉你其他明智的。

如果有人覆盖位置对象。 他们会做一个垫片旧版本浏览器。 它会得到一些新的功能,需要进行匀和你3岁的代码将失败。

我的最后一个音符思考时。

书写干净,清晰目的的代码做一些事情为你的代码不能回答对错。 它所做的是它使你的代码的推动者。

您可以使用更多的东西插件,图书馆与代码之间中断的恐惧。

作为记录。 使用

window.location.href



文章来源: What's the difference between window.location= and window.location.replace()?