Rumah  >  Artikel  >  hujung hadapan web  >  Pemahaman mendalam tentang pengetahuan asas deklarasi pembolehubah javascript

Pemahaman mendalam tentang pengetahuan asas deklarasi pembolehubah javascript

WBOY
WBOYasal
2016-05-16 16:30:501446semak imbas

Berbanding dengan C/C, gelung for dalam ECMAScript tidak boleh mencipta konteks setempat.

Salin kod Kod adalah seperti berikut:

untuk (var k dalam {a: 1, b: 2}) {
makluman(k);
}

alert(k); // Walaupun gelung telah tamat, pembolehubah k masih dalam skop semasa
Pada bila-bila masa, pembolehubah hanya boleh diisytiharkan dengan menggunakan kata kunci var.

Pernyataan tugasan di atas:

a = 10; Ini hanya mencipta sifat baharu pada objek global (tetapi ia bukan pembolehubah). "Bukan pembolehubah" tidak bermakna ia tidak boleh diubah, tetapi ia tidak mematuhi konsep pembolehubah dalam spesifikasi ECMAScript, jadi ia "bukan pembolehubah" (sebab mengapa ia boleh menjadi hak milik objek global adalah sepenuhnya kerana terdapat global dalam Objek JavaScript, operasi ini bukan untuk mengisytiharkan pembolehubah tetapi untuk menambah atribut
pada objek global.
Mari lihat contoh mudah untuk menggambarkan masalah

Salin kod Kod adalah seperti berikut:
jika (!("a" dalam tetingkap)) {
var a = 1;
}
makluman(a);

Pertama sekali, semua pembolehubah global adalah sifat tetingkap

Anda boleh menggunakan kaedah berikut untuk menyemak sama ada pembolehubah global diisytiharkan

"Nama pembolehubah" dalam tetingkap


Kedua, semua pengisytiharan pembolehubah berada di bahagian atas skop, lihat contoh yang serupa:



makluman("a" dalam tetingkap);
var a;


Pada masa ini, walaupun pengisytiharan selepas makluman, makluman masih muncul sebagai benar Ini kerana enjin JavaScript akan mengimbas semua pengisytiharan pembolehubah ini dahulu, dan kemudian mengalihkan pengisytiharan pembolehubah ini ke atas kesannya seperti ini:

var a;
makluman("a" dalam tetingkap);


Ketiga, anda perlu memahami bahawa maksud soalan ini ialah pengisytiharan pembolehubah adalah lanjutan, tetapi tugasan pembolehubah tidak, kerana baris kod ini termasuk pengisytiharan pembolehubah dan penugasan pembolehubah.

Anda boleh membahagikan pernyataan kepada kod seperti ini:

Salin kod Kod adalah seperti berikut: var a; //Pengisytiharan
a = 1; //Tugasan permulaan



Jadi, secara ringkasnya, apabila pengisytiharan pembolehubah dan penugasan digunakan bersama, enjin JavaScript akan membahagikannya secara automatik kepada dua bahagian untuk memajukan pengisytiharan pembolehubah Sebab mengapa langkah penetapan tidak dilanjutkan adalah kerana ia boleh menjejaskan pelaksanaan kod hasil yang dijangkakan.

Kod dalam soalan adalah bersamaan dengan:

jika (!("a" dalam tetingkap)) {
a = 1;
}
makluman(a);


Menurut analisis contoh di atas, apabila mengisytiharkan pembolehubah, anda mesti menambah var sebelum pembolehubah tempatan yang diisytiharkan Jika anda mengisytiharkan pembolehubah global, anda tidak perlu menambah var (sebaik-baiknya untuk mengehadkan bilangan pembolehubah global dan cuba gunakan pembolehubah tempatan)

Berikut menerangkan beberapa ciri penggunaan var

Menggunakan pernyataan var untuk mengisytiharkan pembolehubah berbilang kali bukan sahaja sah, tetapi juga tidak menyebabkan sebarang ralat.
Jika penyataan yang digunakan semula mempunyai nilai awal, ia bertindak hanya sebagai penyataan tugasan.
Jika pengisytiharan digunakan semula tanpa nilai awal, ia tidak akan memberi kesan kepada pembolehubah asal.
Pembolehubah yang diisytiharkan tanpa var wujud sebagai pembolehubah global yang diisytiharkan dengan var adalah pembolehubah tempatan, terutamanya dalam fungsi. Selain itu, selepas ujian, pengisytiharan dengan var adalah lebih cepat daripada tanpa var. Sediakan sebanyak mungkin pembolehubah tempatan dalam fungsi, supaya ia selamat dan pantas, dan operasi pembolehubah adalah lebih munasabah Ralat logik tidak akan disebabkan oleh manipulasi rawak pembolehubah global dalam fungsi.

Apabila mengisytiharkan objek, sebaiknya gunakan kaedah muka diri objek, yang jauh lebih pantas daripada kaedah baharu.

Nama pembolehubah dipilih oleh anda sendiri Untuk menjaga semantik dan spesifikasi, nama pembolehubah mungkin lebih panjang sedikit, tetapi sila ambil perhatian bahawa panjang nama pembolehubah juga akan mempengaruhi kelajuan pelaksanaan kod. Pengisytiharan dengan nama pembolehubah panjang tidak dilaksanakan secepat yang pendek.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn