Apakah ada perbedaan antara kedua garis ini?
var url = "http://www.google.com/";
window.location = url;
window.location.replace(url);
javascript
window
location
Aaron Digulla
sumber
sumber
href
danassign
: stackoverflow.com/q/2383401/632951 , stackoverflow.com/q/7703689/632951 , stackoverflow.com/q/10302905/632951Jawaban:
window.location
menambahkan item ke riwayat Anda sehingga Anda dapat (atau seharusnya bisa) mengklik "Kembali" dan kembali ke halaman saat ini.window.location.replace
mengganti item riwayat saat ini sehingga Anda tidak dapat kembali ke sana.Lihat
window.location
:Oh dan secara umum:
disukai:
sumber
window.location.href
disukaiwindow.location
?window.location.replace(URL)
URL yang persis sama dengan URL saat ini, dapatkah saya berharap untuk me-refresh / memuat ulang atau apakah ada opsi untuk tidak melakukan apa-apa?TLDR;
gunakan
location.href
atau gunakan lebih baikwindow.location.href
;Namun jika Anda membaca ini, Anda akan mendapatkan bukti yang tidak dapat disangkal.
Sebenarnya itu boleh saja digunakan tetapi mengapa melakukan hal-hal yang dipertanyakan. Anda harus mengambil jalan yang lebih tinggi dan lakukan saja dengan cara yang mungkin harus dilakukan.
Kode ini benar-benar sintaksis-bijaksana, logika-bijaksana, tipe-bijaksana Anda tahu satu-satunya hal yang salah dengan itu?
itu
location
bukanlocation.href
bagaimana dengan ini
apa nilainya
mystring
? apakah ada yang benar-benar tahu tanpa melakukan tes. Tidak ada yang tahu apa yang sebenarnya akan terjadi di sini. Persetan saya baru saja menulis ini dan saya bahkan tidak tahu apa fungsinya.location
adalah sebuah objek tetapi saya menugaskan sebuah string apakah akan meneruskan string atau melewatkan objek lokasi. Katakanlah ada beberapa jawaban untuk bagaimana ini harus dilaksanakan. Bisakah Anda menjamin semua browser akan melakukan hal yang sama?Ini saya bisa menebak semua browser akan menangani hal yang sama.
Bagaimana jika Anda menempatkan ini dalam naskah yang akan rusak karena kompiler jenis akan mengatakan ini seharusnya menjadi objek?
Namun percakapan ini jauh lebih dalam dari sekedar
location
objek. Konversi apa ini tentang programmer seperti apa yang Anda inginkan?Jika Anda mengambil jalan pintas ini, ya itu mungkin baik-baik saja hari ini, kamu mungkin baik-baik saja besok, neraka mungkin baik-baik saja selamanya, tetapi Anda sekarang menjadi programmer yang buruk. Ini tidak akan apa-apa untuk Anda dan itu akan mengecewakan Anda.
Akan ada lebih banyak objek. Akan ada sintaks baru.
Anda mungkin mendefinisikan pengambil yang hanya mengambil string tetapi mengembalikan objek dan bagian terburuknya adalah Anda akan berpikir Anda melakukan sesuatu yang benar, Anda mungkin berpikir Anda brilian untuk metode pintar ini karena orang-orang di sini telah memalukan Anda.
Dengan getter dan setter, kode ini akan benar-benar berfungsi, tetapi hanya karena itu bisa dilakukan tidak berarti itu 'WISE' untuk melakukannya.
Kebanyakan orang yang memprogram suka untuk memprogram dan suka untuk menjadi lebih baik. Selama beberapa tahun terakhir saya menjadi cukup baik dan belajar banyak. Hal terpenting yang saya tahu sekarang terutama ketika Anda menulis Perpustakaan adalah konsistensi dan prediktabilitas.
Lakukan hal-hal yang dapat Anda lakukan secara konsisten.
+"2"
<- ini di sini mem-parsing string ke nomor. haruskah kamu menggunakannya? atau yang harus Anda gunakanparseInt("2")
?bagaimana
var num =+"2"
?Dari apa yang telah Anda pelajari, dari pikiran stackoverflow saya tidak terlalu berharap.
Jika Anda mulai mengikuti 2 kata ini konsisten dan dapat diprediksi. Anda akan tahu jawaban yang tepat untuk banyak pertanyaan di stackoverflow.
Mari saya tunjukkan bagaimana ini terbayar. Biasanya saya letakkan
;
di setiap baris javascript yang saya tulis. Saya tahu ini lebih ekspresif. Saya tahu ini lebih jelas. Saya telah mengikuti aturan saya. Suatu hari saya memutuskan untuk tidak melakukannya. Mengapa? Karena begitu banyak orang mengatakan kepada saya bahwa itu tidak diperlukan lagi dan JavaScript dapat melakukannya tanpa itu. Jadi apa yang saya putuskan untuk melakukan ini. Sekarang karena saya telah menjadi yakin akan diri saya sebagai seorang programmer (seperti Anda harus menikmati buah dari penguasaan bahasa) saya menulis sesuatu yang sangat sederhana dan saya tidak memeriksanya. Saya menghapus satu koma dan saya pikir saya tidak perlu menguji ulang untuk hal sederhana seperti menghilangkan satu koma.Saya menulis sesuatu yang mirip dengan ini di ES6 dan Babel
Kode ini gagal dan butuh waktu lama untuk mencari tahu. Untuk beberapa alasan apa yang dilihatnya
tersembunyi jauh di dalam kode sumber itu mengatakan kepada saya "halo dunia" bukan fungsi.
Untuk lebih menyenangkan, simpul tidak menampilkan peta sumber kode yang diubah.
Menghabiskan begitu banyak waktu bodoh. Saya juga mempresentasikan kepada seseorang tentang bagaimana ES6 brilian dan kemudian saya harus mulai debugging dan menunjukkan bagaimana ES6 bebas sakit kepala dan lebih baik. Tidak meyakinkan itu.
Saya harap ini menjawab pertanyaan Anda. Ini menjadi pertanyaan lama lebih untuk generasi masa depan, orang-orang yang masih belajar.
Pertanyaan ketika orang mengatakan itu tidak masalah cara baik bekerja. Peluang orang bijak yang lebih bijaksana akan memberi tahu Anda hal-hal bijak lainnya.
bagaimana jika seseorang menimpa objek lokasi. Mereka akan melakukan shim untuk browser lama. Ini akan mendapatkan beberapa fitur baru yang perlu di-shim dan kode 3 tahun Anda akan gagal.
Catatan terakhir saya untuk direnungkan.
Menulis kode yang bersih dan jelas bertujuan melakukan sesuatu untuk kode Anda yang tidak dapat dijawab dengan benar atau salah. Apa yang dilakukannya adalah membuat kode Anda enabler.
Anda dapat menggunakan lebih banyak plugin hal-hal, Perpustakaan tanpa takut gangguan antara kode.
untuk catatan. menggunakan
window.location.href
sumber
window.location.href
lebihwindow.location
, Anda lupa pertanyaan itu sebenarnya menanyakan perbedaan antara ini danwindow.location.replace()
TLDR; use location.href or better use window.location.href;
TLDR adalah baris ini. Sisanya adalah "jawaban".mystring = location.href = "#/some/spa/route"
. Selain itu, banyak bahasa akan memungkinkan (tersirat) mengetikkan beberapa cara. Pada akhirnya, javascript adalah bahasa yang diketik secara dinamis, meletakkan konsep tipe di atasnya dan mengatakan itu tidak baik tidak ada artinya.console
atau membayangiwindow
- Sekarang Anda memiliki masalah yang lebih besar .