Rumah >hujung hadapan web >tutorial js >Petua Pantas: Cara Mengisytiharkan Pembolehubah dalam JavaScript
Dalam hujung cepat ini, anda akan belajar cara menggunakan pembolehubah dan perbezaan antara pelbagai deklarasi.
Takeaways Key
var
Pengisytiharan ini mungkin yang paling popular, kerana tidak ada alternatif sehingga ECMAScript 6. Pembolehubah yang diisytiharkan dengan VAR boleh didapati dalam skop fungsi yang dilampirkan. Sekiranya tidak ada fungsi melampirkan, ia boleh didapati di seluruh dunia.
<span>var x; // Declaration and initialization </span>x <span>= "Hello World"; // Assignment </span> <span>// Or all in one </span><span>var y = "Hello World"; </span>
Contoh:
Ini akan menyebabkan rujukan referror: Hello tidak ditakrifkan, kerana pembolehubah hello hanya tersedia dalam fungsi Sayhello. Tetapi yang berikut akan berfungsi, kerana pembolehubah akan diisytiharkan secara global - dalam konsol skop yang sama.log (hello) terletak:
<span>function sayHello(){ </span> <span>var hello = "Hello World"; </span> <span>return hello; </span><span>} </span><span>console.log(hello); </span>
biarkan
<span>var hello = "Hello World"; </span><span>function sayHello(){ </span> <span>return hello; </span><span>} </span><span>console.log(hello); </span>
<span>var x; // Declaration and initialization </span>x <span>= "Hello World"; // Assignment </span> <span>// Or all in one </span><span>var y = "Hello World"; </span>
biarkan keturunan VAR dalam JavaScript moden. Skopnya tidak hanya terhad kepada fungsi yang melampirkan, tetapi juga kepada pernyataan blok yang melampirkannya. Kenyataan blok adalah segala -galanya di dalam {dan}, (mis. Keadaan atau gelung). Manfaat Let adalah mengurangkan kemungkinan kesilapan, kerana pembolehubah hanya tersedia dalam skop yang lebih kecil.
Contoh:
<span>function sayHello(){ </span> <span>var hello = "Hello World"; </span> <span>return hello; </span><span>} </span><span>console.log(hello); </span>
Ini akan menyebabkan rujukan referror: Hello tidak ditakrifkan sebagai Hello hanya tersedia di dalam blok yang dilampirkan - dalam kes ini keadaan jika. Tetapi yang berikut akan berfungsi:
<span>var hello = "Hello World"; </span><span>function sayHello(){ </span> <span>return hello; </span><span>} </span><span>console.log(hello); </span>
sintaks:
<span>let x; // Declaration and initialization </span>x <span>= "Hello World"; // Assignment </span> <span>// Or all in one </span><span>let y = "Hello World"; </span>
Secara teknikal, pemalar bukan pembolehubah. Keistimewaan pemalar adalah bahawa anda perlu memberikan nilai apabila mengisytiharkannya dan tidak ada cara untuk menugaskan semula. Const adalah terhad kepada skop blok yang melekat, seperti LET.
Pemalar harus digunakan apabila nilai tidak boleh berubah semasa aplikasi berjalan, seperti yang anda akan diberitahu dengan kesilapan ketika cuba menimpa mereka.
Anda boleh menulis semua pengisytiharan yang dinamakan di atas dalam konteks global (iaitu di luar mana -mana fungsi), tetapi walaupun dalam fungsi, jika anda lupa menulis var, biarkan atau const sebelum tugasan, pembolehubah akan secara automatik menjadi global.
Contoh:
<span>var name = "Peter"; </span><span>if(name === "Peter"){ </span> <span>let hello = "Hello Peter"; </span><span>} else { </span> <span>let hello = "Hi"; </span><span>} </span><span>console.log(hello); </span>
di atas akan mengeluarkan Hello World ke konsol, kerana tidak ada perisytiharan sebelum tugasan hello = dan oleh itu pembolehubah tersedia di seluruh dunia.
nota: Untuk mengelakkan secara tidak sengaja mengisytiharkan pembolehubah global, anda boleh menggunakan mod ketat.
Perbezaan lain antara VAR dan LET/Const berkaitan dengan pembolehubah angkat. Perisytiharan pembolehubah akan sentiasa diangkat secara dalaman (dipindahkan) ke bahagian atas skop semasa. Ini bermakna yang berikut:
<span>var name = "Peter"; </span><span>if(name === "Peter"){ </span> <span>let hello = "Hello Peter"; </span> <span>console.log(hello); </span><span>} else { </span> <span>let hello = "Hi"; </span> <span>console.log(hello); </span><span>} </span>
bersamaan dengan:
<span>const x = "Hello World"; </span>
Petunjuk tingkah laku ini adalah bahawa kedua -dua contoh akan log tidak ditentukan ke konsol. Sekiranya var hello; tidak akan selalu berada di atas ia akan membuang referensi.
Tingkah laku ini dipanggil Hoisting terpakai kepada var dan juga untuk membiarkan/const. Seperti yang disebutkan di atas, mengakses pembolehubah VAR sebelum perisytiharannya akan kembali tidak ditentukan kerana ini adalah nilai JavaScript yang diberikan apabila memulakannya.
tetapi mengakses pembolehubah let/const sebelum pengisytiharannya akan membuang kesilapan. Ini disebabkan oleh hakikat bahawa mereka tidak dapat diakses sebelum pengisytiharan mereka dalam kod. Tempoh antara memasuki skop pembolehubah dan mencapai perisytiharan mereka dipanggil zon mati temporal - iaitu tempoh di mana pembolehubah tidak dapat diakses.
anda boleh membaca lebih lanjut mengenai angkat dalam artikel yang demystifying JavaScript Variable Scope and Hoisting.
Untuk mengurangkan kerentanan terhadap kesilapan, anda harus menggunakan const dan biarkan apabila mungkin. Jika anda benar -benar perlu menggunakan VAR maka pastikan anda memindahkan pengisytiharan ke bahagian atas skop, kerana ini mengelakkan tingkah laku yang tidak diingini yang berkaitan dengan angkat.
Dalam JavaScript, var, let, dan const semuanya digunakan untuk mengisytiharkan pembolehubah, tetapi mereka mempunyai tingkah laku yang berbeza. var adalah fungsi-scoped, yang bermaksud pembolehubah yang diisytiharkan dengan VAR boleh didapati dalam fungsi yang diisytiharkan. Biarkan dan const adalah blok-scoped, yang bermaksud mereka hanya boleh didapati di dalam blok yang diisytiharkan. Selain itu, Const digunakan untuk digunakan untuk digunakan untuk digunakan untuk digunakan untuk mengisytiharkan pemalar, atau pembolehubah yang tidak dapat ditugaskan semula setelah dimulakan. Pada mulanya mengisytiharkannya. Jika anda mengisytiharkan pembolehubah dengan VAR, anda boleh mengulanginya. Walau bagaimanapun, jika anda mengisytiharkan pembolehubah dengan LeT atau Const, anda tidak boleh mengulanginya dalam skop yang sama. Percubaan untuk berbuat demikian akan menghasilkan syntaxError.
Hoisting adalah mekanisme JavaScript di mana pembolehubah dan pengisytiharan fungsi dipindahkan ke bahagian atas skop yang mengandungi mereka semasa fasa penyusunan. Ini bermakna anda boleh menggunakan pembolehubah dan fungsi sebelum diisytiharkan. Walau bagaimanapun, hanya pengisytiharan yang dinaikkan, bukan permulaan. Sekiranya pemboleh ubah diisytiharkan dan dimulakan selepas menggunakannya, pembolehubah tidak akan ditentukan. boleh diakses dari dalam kod anda. Pembolehubah yang diisytiharkan dengan VaR mempunyai skop fungsi, yang bermaksud mereka boleh diakses di mana -mana sahaja dalam fungsi yang diisytiharkan dalam. Pembolehubah yang diisytiharkan dengan LeT dan Const mempunyai skop blok, yang bermaksud mereka hanya boleh diakses dalam blok yang mereka diisytiharkan dalam.
Atas ialah kandungan terperinci Petua Pantas: Cara Mengisytiharkan Pembolehubah dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!