TLDR;
usare location.href
o usare meglio window.location.href
;
Tuttavia se leggi questo otterrai prove innegabili.
La verità è che va bene usare, ma perché fare cose discutibili. Dovresti prendere la strada più alta e farlo nel modo in cui probabilmente dovrebbe essere fatto.
location = "#/mypath/otherside"
var sections = location.split('/')
Questo codice è perfettamente corretto in termini di sintassi, in termini logici, in termini di tipo, conosci l'unica cosa che non va?
ha location
invece dilocation.href
che dire di questo
var mystring = location = "#/some/spa/route"
qual è il valore di mystring
? qualcuno lo sa davvero senza fare qualche test. Nessuno sa cosa accadrà esattamente qui. Diavolo l'ho appena scritto e non so nemmeno cosa faccia. location
è un oggetto ma sto assegnando una stringa, passerà la stringa o passerà l'oggetto posizione. Diciamo che c'è una risposta a come dovrebbe essere implementato. Potete garantire che tutti i browser facciano la stessa cosa?
Questo posso praticamente supporre che tutti i browser gestiranno lo stesso.
var mystring = location.href = "#/some/spa/route"
E se lo inserissi in dattiloscritto si romperà perché il compilatore del tipo dirà che si suppone che sia un oggetto?
Questa conversazione è molto più profonda del semplice location
oggetto comunque. Che cos'è questa conversione su che tipo di programmatore vuoi essere?
Se prendi questa scorciatoia, sì, potrebbe andare bene oggi, potresti andare bene domani, l'inferno potrebbe andare bene per sempre, ma ora sei un cattivo programmatore. Non ti andrà bene e ti mancherà.
Ci saranno più oggetti. Ci sarà una nuova sintassi.
Potresti definire un getter che prende solo una stringa ma restituisce un oggetto e la parte peggiore è che penserai di fare qualcosa di corretto, potresti pensare di essere brillante per questo metodo intelligente perché le persone qui ti hanno fatto vergognare.
var Person.name = {first:"John":last:"Doe"}
console.log(Person.name) // "John Doe"
Con getter e setter questo codice funzionerebbe davvero, ma solo perché può essere fatto non significa che sia "SAGGIO" farlo.
Molte persone che programmano adorano programmare e amano migliorare. Negli ultimi anni sono diventato abbastanza bravo e ho imparato molto. La cosa più importante che conosco ora, specialmente quando scrivi Librerie, è coerenza e prevedibilità.
Fai le cose che puoi costantemente fare.
+"2"
<- questo qui analizza la stringa in un numero. dovresti usarlo? o dovresti usare parseInt("2")
?
che dire var num =+"2"
?
Da quello che hai imparato, dalle menti di StackOverflow non sono troppo speranzoso.
Se inizi a seguire queste 2 parole coerenti e prevedibili. Conoscerai la risposta giusta a tantissime domande su StackOverflow.
Lascia che ti mostri come questo ripaga. Normalmente posiziono ;
su ogni riga di javascript che scrivo. So che è più espressivo. So che è più chiaro. Ho seguito le mie regole. Un giorno ho deciso di non farlo. Perché? Perché così tante persone mi dicono che non è più necessario e JavaScript può farne a meno. Quindi quello che ho deciso di fare questo. Ora, poiché sono diventato sicuro di me stesso come programmatore (come dovresti goderti il frutto della padronanza di una lingua) ho scritto qualcosa di molto semplice e non l'ho verificato. Ho cancellato una virgola e non pensavo di dover ripetere il test per una cosa così semplice come rimuovere una virgola.
Ho scritto qualcosa di simile a questo in es6 e babel
var a = "hello world"
(async function(){
//do work
})()
Questo codice ha esito negativo e ha impiegato un'eternità per capire. Per qualche ragione quello che vide fu
var a = "hello world"(async function(){})()
nascosto nel profondo del codice sorgente mi diceva che "ciao mondo" non è una funzione.
Per nodo più divertente non mostra le mappe di origine del codice traspilato.
Ho perso così tanto tempo stupido. Stavo anche presentando a qualcuno come ES6 è geniale e poi ho dovuto iniziare il debug e dimostrare quanto ES6 sia privo di mal di testa e migliore. Non è convincente.
Spero che questo abbia risposto alla tua domanda. Questa è una vecchia domanda, è più per le generazioni future, le persone che stanno ancora imparando.
Domanda quando le persone dicono che non importa in entrambi i modi. È probabile che una persona più saggia e più esperta ti dirà altri saggi.
cosa succede se qualcuno sovrascrive l'oggetto posizione. Faranno uno shim per i browser più vecchi. Otterrà alcune nuove funzionalità che devono essere eliminate e il tuo codice di 3 anni fallirà.
La mia ultima nota su cui riflettere.
Scrivere codice chiaro e chiaro fa qualcosa per il tuo codice a cui non si può rispondere con giusto o sbagliato. Quello che fa è rendere il tuo codice un attivatore.
Puoi usare più plugin di cose, Librerie senza timore di interruzioni tra i codici.
per il record. uso
window.location.href