В чем разница между окном.location= и окно.местоположение.заменить()?



есть ли разница между этими двумя строками?



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

2 ответов:

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 это объект, но я назначаю строку, будет ли она передавать строку или передавать объект location. Допустим, есть какой-то ответ на то, как это должно быть реализовано. Вы можете гарантировать, что все браузеры будут делать то же самое вещь?

это я могу в значительной степени предположить, что все браузеры будут обрабатывать то же самое.

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

как насчет того, что если вы поместите это в typescript, он сломается, потому что компилятор типа скажет, что это должен быть объект?

этот разговор гораздо глубже, чем просто объект. Что это за преобразование о том, каким программистом вы хотите быть?

если вы возьмете этот короткий путь, да, это может быть хорошо сегодня, да, это может быть завтра все будет хорошо, черт возьми, это может быть хорошо навсегда, но вы, сэр, теперь плохой программист. Это не будет хорошо для вас и он вас не подведет.

там будет больше объектов. Там будет новый синтаксис.

вы можете определить геттер, который принимает только строку, но возвращает объект, и худшая часть-вы будете думать, что делаете что-то правильно, вы можете подумать, что вы блестящи для этого умного метода, потому что люди здесь позорно привели вас заблудший.

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

с геттерами и сеттерами этот код действительно будет работать, но только потому, что это можно сделать, не означает, что это "мудро".

большинство людей, которые программируют любят программировать и любят становиться лучше. За последние несколько лет я стал довольно хорошим и многому научился. Самое главное, что я знаю сейчас, особенно когда вы пишете библиотеки-это последовательность и предсказуемость.

делать то, что вы можете последовательно делать.

+"2" parseInt("2")?

а как же var num =+"2"?

из того, что вы узнали, из умов stackoverflow я не слишком надеюсь.

если вы начнете следовать этим 2 словам последовательно и предсказуемо. Вы будете знать правильный ответ на кучу вопросов на StackOverflow.

позвольте мне показать вам, как это окупается. Обычно Я место ; на каждой строке javascript я пишу. Я знаю, что это более выразительно. Я знаю, что это более ясно. Я следовал своим правилам. Однажды я решил этого не делать. Зачем? Потому что так много людей говорят мне, что это больше не нужно, и JavaScript может обойтись без него. Так что я решил сделать это. Теперь ведь я стал уверен в себе, как программист (как вы должны наслаждаться плодами освоения языка) я написал что-то очень простое и я не проверял его. Я стер одну запятую и не сделал этого думаю, мне нужно было повторно проверить такую простую вещь, как удаление одной запятой.

я написал нечто подобное в es6 и babel

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

этот код потерпел неудачу и занял целую вечность, чтобы выяснить. По какой-то причине то, что он увидел, было

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

скрытый глубоко в исходном коде, он говорил мне, что" hello world " - это не функция.

для большего удовольствия узел не показывает исходные карты транспилированного кода.

потратил столько глупого времени. Я также представлял кому-то о том, как ES6 блестящ, а затем мне пришлось начать отладку и продемонстрировать, как без головной боли и лучше ES6. Это неубедительно.

я надеюсь, что это ответ на ваш вопрос. Это старый вопрос, это больше для будущего поколения, людей, которые все еще учатся.

вопрос, когда люди говорят, что это не имеет значения, в любом случае работает. Скорее всего более мудрый более опытный человек скажет вам другой мудрый.

что делать, если кто-то перезаписывает объект location. Они будут делать прокладку для старых браузеров. Он получит какую-то новую функцию, которая должна быть заменена, и ваш 3-летний код не будет работать.

моя последняя записка, чтобы поразмыслить.

написание чистого, четкого целенаправленного кода делает что-то для вашего кода, который не может быть ответом с правильным или неправильным. То, что он делает, это сделать ваш код активатором.

вы можете использовать больше вещей Плагины, библиотеки без страха прерывания между коды.

для записи. используйте

window.location.href

Comments

    Ничего не найдено.