Rumah  >  Artikel  >  hujung hadapan web  >  Pengenalan kepada definisi pembolehubah dan storan dalam kemahiran JavaScript_javascript

Pengenalan kepada definisi pembolehubah dan storan dalam kemahiran JavaScript_javascript

WBOY
WBOYasal
2016-05-16 16:22:591142semak imbas

Tidak seperti bahasa pengaturcaraan seperti C dan Java, pembolehubah dalam JavaScript tidak ditaip dan semua definisi pembolehubah menggunakan kata kunci var:


Salin kod Kod adalah seperti berikut:

var a;
var m, n;
var x=42, y="ujian";


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:


Salin kod Kod adalah seperti berikut:

var b = "temp";
console.log(typeof b);//string
b = 108;
console.log(jenis b);//nombor


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:


Salin kod Kod adalah seperti berikut:

var c = "hello";
console.log(c);//hello
var c = benar;
console.log(c);//true


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:


Salin kod Kod adalah seperti berikut:

var e = "globalVariableValue";//ditakrifkan di luar mana-mana fungsi, ia adalah pembolehubah global, tetapi tidak disimpan dalam "ini"
f = "globalVariableValue2";
this.g = "globalVariableValue3";
console.log(this.e);//undefined
console.log(this.f);//globalVariableValue2
console.log(this.g);//globalVariableValue3

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.

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