Rumah > Artikel > hujung hadapan web > Pengenalan kepada definisi pembolehubah dan storan dalam kemahiran JavaScript_javascript
Tidak seperti bahasa pengaturcaraan seperti C dan Java, pembolehubah dalam JavaScript tidak ditaip dan semua definisi pembolehubah menggunakan kata kunci var:
Jika pembolehubah tidak diberikan nilai selepas ia ditakrifkan, nilai pembolehubah tidak ditentukan. Sebagai contoh, nilai bagi tiga pembolehubah a, m, dan n dalam kod di atas semuanya tidak ditentukan.
Memandangkan pembolehubah dalam JS tidak berjenis, adalah mungkin untuk menetapkan jenis nilai yang berbeza kepada pembolehubah yang sama, seperti:
Sebagai tambahan kepada jenis tugasan yang berbeza kepada pembolehubah yang sama, JavaScript juga boleh mentakrifkan pembolehubah berulang kali jika anda melakukan ini, pernyataan definisi pembolehubah selepas kali pertama adalah bersamaan dengan pernyataan tugasan:
Dalam mod ketat standard ECMAScript, semua definisi pembolehubah mesti menggunakan kata kunci var. Jika mod ketat tidak digunakan, apabila atur cara JS memberikan nilai kepada pembolehubah yang tidak ditentukan, atur cara akan mencipta sifat dengan nama yang sama dengan pembolehubah dalam objek global JS, iaitu pembolehubah global baharu akan dicipta. Pendekatan ini akan menyebabkan banyak masalah (contohnya, pencemaran berubah global antara pelbagai program JS, dsb.) dan akan membawa banyak masalah kepada penyelenggaraan kemudian, oleh itu, dalam proses pembangunan sebenar, pendekatan ini harus dielakkan sebaik mungkin;
Penyimpanan pembolehubah
Jika pembolehubah yang ditakrifkan ialah pembolehubah global dan kata kunci var tidak digunakan dalam proses definisi pembolehubah, maka pembolehubah itu akan wujud sebagai atribut objek global, yang boleh diperolehi dengan mengakses atribut sepadan ini (global objek), atau Ia boleh dipadamkan daripada objek global dengan menggunakan kata kunci padam:
padam f;
padamkan g;
console.log(this.f);//undefined
console.log(this.g);//undefined
Untuk setiap panggilan fungsi dalam JavaScript, JavaScript akan mencipta objek setempat untuk menyimpan pembolehubah tempatan yang ditakrifkan dalam fungsi jika terdapat fungsi bersarang ditakrifkan di dalam fungsi, JavaScript akan mencipta objek tempatan selepas fungsi itu ditentukan objek tempatan di dalam objek tempatan. Untuk fungsi, terdapat seberapa banyak lapisan objek tempatan bersarang kerana terdapat lapisan definisi fungsi bersarang di dalamnya. Objek tempatan ini dipanggil "objek panggilan fungsi" ("objek panggilan" dalam ECMAScript 3, dinamakan semula sebagai "rekod persekitaran deklaratif" dalam ECMAScript 5, tetapi secara peribadi saya fikir nama dalam ECMAScript 3 lebih mudah difahami).
Bertentangan dengan objek global ini, JavaScript tidak menyediakan sebarang cara untuk mengakses objek tempatan ini (objek panggilan fungsi). Oleh itu, pembangun tidak boleh mengendalikan objek tempatan ini. Walau bagaimanapun, memahami objek panggilan fungsi ini akan sangat membantu dalam memahami beberapa konsep dalam JavaScript, seperti skop pembolehubah dan penutupan.