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
предмет. Что это за конверсия о том, каким программистом ты хочешь быть?
Если вы возьмете этот кратчайший путь, да, это может быть хорошо сегодня, вы можете быть хорошо завтра, черт возьми, это может быть хорошо навсегда, но вы, сэр, сейчас плохой программист. Это не будет хорошо для вас, и это подведет вас.
Там будет больше объектов. Там будет новый синтаксис.
Вы можете определить метод получения, который принимает только строку, но возвращает объект, и хуже всего то, что вы будете думать, что делаете что-то правильно, вы можете подумать, что вы великолепны в этом умном методе, потому что люди здесь постыдно сбили вас с пути.
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(){})()
скрытый глубоко в исходном коде, он говорил мне, что «привет мир» не является функцией.
Для большего удовольствия узел не показывает исходные карты переданного кода.
Потрачено впустую столько глупого времени. Я также рассказывал кому-то о том, насколько хорош ES6, а затем мне пришлось начать отладку и продемонстрировать, насколько свободна головная боль и лучше ES6. Это не убедительно.
Я надеюсь, что это ответило на ваш вопрос. Это старый вопрос, это больше для будущего поколения, людей, которые все еще учатся.
Вопрос, когда люди говорят, что это не имеет значения, так или иначе работает. Скорее всего, мудрее, более опытный человек скажет вам другое.
Что делать, если кто-то перезаписывает местоположение объекта. Они сделают прокладку для старых браузеров. Он получит некоторую новую функцию, которая должна быть изменена, и ваш 3-летний код потерпит неудачу.
Мое последнее замечание для размышления.
Написание чистого, ясного целенаправленного кода делает что-то для вашего кода, и на него нельзя ответить правильным или неправильным. Он делает ваш код активатором.
Вы можете использовать больше вещей, плагинов, библиотек без страха прерывания между кодами.
Для записи. использование
window.location.href