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"
З геттерами та сетерами цей код насправді спрацює, але те, що він може бути зроблений, не означає, що це "WISE".
Більшість людей, які програмують, люблять програмувати і люблять покращуватися. За останні кілька років я набрався досить непогано і багато чому вчився. Найголовніше, що я зараз знаю, особливо коли ви пишете Бібліотеки, - це послідовність та передбачуваність.
Робіть те, що ви можете послідовно робити.
+"2"
<- це право тут аналізує рядок на число. ви повинні використовувати його? чи варто використовувати parseInt("2")
?
про що var num =+"2"
?
З того, що ви навчились, я не надто сподіваюся, що я розумію
Якщо ви почнете виконувати ці 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