javascript — В чем разница между window.location= и window.location.replace()?

TLDR;

используйте location.href или лучше используйте window.location.href ;

Однако, если вы прочтете это, вы получите неопровержимое доказательство.

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

 location = "#/mypath/otherside"
разделы var = location.split('/')
 

Этот код совершенно корректен с точки зрения синтаксиса, логики, типа знаешь, что в этом плохого?

у него адрес вместо location.href

как насчет этого

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

каково значение mystring ? кто-нибудь действительно знает, не делая некоторые тесты. Никто не знает, что именно здесь произойдет. Черт, я только что написал это, и я даже не знаю, что это делает.

местоположение — это объект, но я назначаю строку, будет ли она передавать строку или передавать объект местоположения. Допустим, есть некоторый ответ на то, как это должно быть реализовано. Можете ли вы гарантировать, что все браузеры будут делать то же самое?

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

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

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

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

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

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

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

 var Person.name = {первый:"Джон":последний:"Доу"}
console.log(Person.name) // "Джон Доу"
 

С геттерами и сеттерами этот код действительно будет работать, но только потому, что это можно сделать, не означает, что это «МУДРО».

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

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

+"2" <-- прямо здесь разбирает строку на число. вы должны использовать его? или вы должны использовать parseInt(«2») ?

как насчет var num =+"2"

?

Из того, что вы узнали, из соображений stackoverflow я не очень надеюсь.

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

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

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

 var a = "hello world"
(асинхронная функция(){
  //Выполнять работу
})()
 

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

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

, скрытый глубоко в исходном коде, говорил мне, что «привет, мир» не является функцией.

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

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

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

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

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

Моя последняя записка для размышлений.

Написание чистого, ясного целенаправленного кода делает с вашим кодом нечто, на что нельзя ответить правильно или неправильно. Что он делает, так это делает ваш код активатором.

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

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

window.location.href

location.replace() и location.assign() — Блог Bambielli