Artikel ini membahas perbedaan antara VAR dan tidak ada VAR di JavaScript. Ruang lingkup deklarasi variabel dalam JS didasarkan pada fungsi, jadi kita sering melihat bagaimana menghindari polusi variabel global.
(fungsi(){ // ... })();Di dalam suatu fungsi, variabel dengan var dan tanpa var berbeda. Ada VAR yang mendeklarasikan variabel lokal, dan tidak ada VARS, yang dinyatakan variabel global, sehingga Anda dapat mengekspos hal -hal antarmuka ke luar.
Saat mendeklarasikan variabel dalam ruang lingkup global, VAR dan VAR tampak sama. Kita tahu bahwa variabel global yang dinyatakan adalah sifat -sifat Windows. Apakah mereka sama, kami menemukan perbedaan melalui metode kueri atribut yang disediakan oleh ECMASCRPIT5.
var ffff = 2; window.fffa = 3; ffb = 4; this.ffc = 4; var fftx = object.getOwnPropertyDescriptor (window, 'ffff'); // dapat dikonfigurasi: false, enumerable: true, value: 2, writable: true var ffatx = object.getOwnPropertyDescriptor (window, 'fffa'); // dapat dikonfigurasi: true, enumerable: true, value: 2, writable: true var ffbtx = object.getOwnPropertyDescriptor (window, 'fffa'); // dapat dikonfigurasi: true, enumerable: true, value: 2, writable: true var ffbtx = object.getOwnPropertyDescriptor (window, 'ffb'); // dapat dikonfigurasi: true, enumerable: true, value: 2, writable: true var ffctx = object.getOwnPropertyDescriptor (window, 'ffc'); // dapat dikonfigurasi: true, enumerable: true, value: 2, writable: true
Melalui hal di atas, kami menemukan bahwa masih ada perbedaan. Kami menggunakan Hapus untuk memverifikasi bahwa atribut dengan konfigurasi False tidak dapat dihapus. Artinya, sifat -sifat objek global yang dinyatakan melalui variabel var tidak dapat dihapus. Kami juga akan menemukan bahwa sifat -sifat objek global yang dibuat oleh deklarasi fungsi tidak dapat dihapus.
hapus ffff; // tidak dapat menghapus FFFA; // dapat menghapus ffb; // Dapat menghapus FFC; // dapat menghapus
Kesimpulannya adalah bahwa ada perbedaan antara menambahkan VAR dan mendeklarasikan variabel global tanpa VAR.
Legal dan tidak berbahaya untuk berulang kali menyatakan pernyataan menggunakan pernyataan VAR. Jika deklarasi diulang dan penugasan disediakan, tidak ada bedanya dengan pernyataan penugasan umum. Jika Anda mencoba membaca variabel yang belum dinyatakan, JS akan melaporkan kesalahan.
Variabel yang dinyatakan atau fungsi internal dalam ruang lingkup JavaScript terlihat di badan fungsi. Artinya, fungsi mungkin sudah tersedia sebelum didefinisikan. Ada dua cara untuk mendefinisikan fungsi, satu adalah ekspresi definisi fungsi, dan yang lainnya adalah pernyataan deklarasi fungsi.
// ekspresi definisi fungsi var fns = function () {// ...}; // fungsi pernyataan pernyataan deklarasi fns () {// ...}Pernyataan Deklarasi Fungsi "diajukan" ke bagian atas skrip eksternal atau ruang lingkup fungsi eksternal, sehingga fungsi yang dinyatakan dengan cara ini dapat dipanggil oleh kode yang muncul di depannya lagi. Dalam ekspresi definisi fungsi, deklarasi variabel adalah canggih, tetapi penugasan variabel tidak maju, sehingga fungsi yang didefinisikan dalam ekspresi tidak dapat dipanggil sebelum definisi fungsi.
(function() { testa(); // Print out testa testb(); // Report an error: It is prompted that undefined is not a function console.log(testc); //undefined, if moved to the above, it is OK to do function testa() { console.log("testa"); } var testb = function() { console.log("tesb"); } var testc = "testc";}) ();Tentu saja, ketika kita mendeklarasikan variabel dan fungsi, kita harus mematuhi spesifikasi dasar, dan variabel dan deklarasi fungsi harus sebelumnya.