TLDR;
usar location.href
ou melhor usar window.location.href
;
No entanto, se você ler isso, obterá uma prova inegável.
A verdade é que é bom usar, mas por que fazer coisas que são questionáveis. Você deve seguir o caminho mais alto e fazê-lo da maneira que provavelmente deve ser feito.
location = "#/mypath/otherside"
var sections = location.split('/')
Esse código está perfeitamente correto em termos de sintaxe, lógica e tipo: você sabe a única coisa errada com ele?
tem em location
vez delocation.href
que tal isso
var mystring = location = "#/some/spa/route"
qual é o valor de mystring
? alguém realmente sabe sem fazer algum teste. Ninguém sabe o que exatamente vai acontecer aqui. Inferno, acabei de escrever isso e nem sei o que faz. location
é um objeto, mas estou atribuindo uma sequência de caracteres que passará a string ou passará o objeto de localização. Vamos dizer que há alguma resposta sobre como isso deve ser implementado. Você pode garantir que todos os navegadores farão a mesma coisa?
Isso eu posso adivinhar que todos os navegadores irão lidar com o mesmo.
var mystring = location.href = "#/some/spa/route"
E se você colocar isso no texto datilografado, ele será quebrado porque o compilador de tipos dirá que isso é suposto ser um objeto?
Essa conversa é muito mais profunda do que apenas o location
objeto. Qual é a conversão de que tipo de programador você deseja ser?
Se você pegar esse atalho, sim, pode estar tudo bem hoje, você pode estar bem amanhã, inferno, pode ficar bem para sempre, mas agora você é um péssimo programador. Não vai ser bom para você e vai falhar.
Haverá mais objetos. Haverá nova sintaxe.
Você pode definir um getter que pega apenas uma string, mas retorna um objeto, e a pior parte é que você acha que está fazendo algo correto, pode ser brilhante para esse método inteligente, porque as pessoas aqui o envergonharam.
var Person.name = {first:"John":last:"Doe"}
console.log(Person.name) // "John Doe"
Com getters e setters, esse código realmente funcionaria, mas apenas porque isso pode ser feito não significa que é 'WISE' fazer isso.
A maioria das pessoas que está programando gosta de programar e gosta de melhorar. Nos últimos anos, fiquei muito bom e aprendi muito. A coisa mais importante que eu sei agora, especialmente quando você escreve Bibliotecas, é consistência e previsibilidade.
Faça as coisas que você pode fazer consistentemente.
+"2"
<- aqui analisa a string para um número. você deveria usá-lo? ou você deve usar parseInt("2")
?
que tal var num =+"2"
?
Pelo que você aprendeu, das mentes do stackoverflow não tenho muita esperança.
Se você começar a seguir estas 2 palavras consistentes e previsíveis. Você saberá a resposta certa para várias perguntas sobre o stackoverflow.
Deixe-me mostrar como isso compensa. Normalmente eu coloco ;
em todas as linhas de javascript que escrevo. Eu sei que é mais expressivo. Eu sei que é mais claro. Eu segui minhas regras. Um dia eu decidi não. Por quê? Porque tantas pessoas estão me dizendo que não é mais necessário e o JavaScript pode ficar sem ele. Então, o que eu decidi fazer isso. Agora, porque eu me tornei um programador (como você deve apreciar o fruto de dominar uma linguagem), escrevi algo muito simples e não o verifiquei. Apaguei uma vírgula e não achei que fosse necessário testar novamente uma coisa tão simples como remover uma vírgula.
Eu escrevi algo semelhante a isso em es6 e babel
var a = "hello world"
(async function(){
//do work
})()
Esse código falhou e levou uma eternidade para descobrir. Por alguma razão, o que viu foi
var a = "hello world"(async function(){})()
escondido dentro do código fonte, ele estava me dizendo "olá mundo" não é uma função.
Para um nó mais divertido, não mostra os mapas de origem do código transpilado.
Perdi tanto tempo estúpido. Eu também estava apresentando a alguém sobre como o ES6 é brilhante e tive que começar a depurar e demonstrar como o ES6 é melhor e sem dor de cabeça. Não é convincente.
Eu espero que isto responda sua pergunta. Sendo uma pergunta antiga, é mais para a geração futura, pessoas que ainda estão aprendendo.
Pergunta quando as pessoas dizem que não importa de qualquer maneira. As chances são de que uma pessoa mais experiente e mais sábia lhe dirá de outra maneira.
e se alguém substituir o objeto de localização. Eles farão um calço para navegadores mais antigos. Ele receberá um novo recurso que precisa ser modificado e seu código de 3 anos falhará.
Minha última nota para refletir.
Escrever um código de propósito limpo e claro faz algo pelo seu código que não pode ser respondido com certo ou errado. O que ele faz é tornar seu código um facilitador.
Você pode usar mais plugins, bibliotecas, sem medo de interrupção entre os códigos.
para o registro. usar
window.location.href