Memahami mekanisme kitar semula js dalam kemahiran version_javascript yang mudah difahami

WBOY
Lepaskan: 2016-05-16 15:13:08
asal
998 orang telah melayarinya

Dalam artikel sebelum ini, saya telah menerangkan mekanisme kitar semula dalam js, tetapi bagi saya pada masa itu, saya agak keliru tentang konsep mekanisme kitar semula Sekarang saya mempunyai pemahaman yang lebih mendalam tentang mekanisme kitar semula, jadi dengan ini Post ini artikel untuk meringkaskan dan mendalami ingatan anda.
Mengapa terdapat mekanisme kitar semula? kenapa?

Sebagai contoh, saya mempunyai kad memori Memori ini adalah 8G. Saya menyimpan fail, video dan muzik ke kad memori ini untuk menyimpan fail lain ke kad memori ini, saya perlu memadam beberapa fail Tetapi fail yang dipadam ini dipadam secara manual oleh kami, bukan?

Masalah ini juga berlaku dalam bahasa pengaturcaraan ini, ya, ingatan! Sebarang pembolehubah yang kami isytiharkan menggunakan memori, dan semakin banyak pembolehubah yang kami ada, semakin perlahan ia akan berjalan. Bukan sahaja pembolehubah sudah tentu, apa-apa dalam kod. Untuk menyelesaikan masalah ini, pereka bentuk bahasa ini mereka bentuk satu set peraturan kitar semula kod.

Peraturan kitar semula kod adalah seperti berikut:

1. Pembolehubah global tidak akan dikitar semula.

2. Pembolehubah setempat akan dikitar semula, iaitu sebaik sahaja fungsi selesai dijalankan, segala-galanya di dalam fungsi akan dimusnahkan.

3. Selagi ia dirujuk oleh skop lain, ia tidak akan dikitar semula

Saya menggunakan beberapa contoh untuk membuktikannya.

function a(){
 var user = "追梦子";
 return user;
}
var b = a();
console.log(b); //追梦子 
Salin selepas log masuk

Secara logiknya, saya tidak boleh mengakses pembolehubah dalam fungsi a, tetapi saya menerima nilai pulangan fungsi a melalui pembolehubah global b, jadi kod akhir menjadi seperti berikut.

function a(){
 var user = "追梦子";
 return user;
}
var b = "追梦子";
console.log(b);
Salin selepas log masuk

Nampaknya tiada kitar semula kod dalam perkara ini, jadi mari lihat sekeping kod seterusnya.

function a(){
 var num = 0;
 return function(){
  num ++;
  console.log(num);
 };
}
var b = a();
b(); //1
b(); //2
b(); //3
Salin selepas log masuk

Lihat, jika anda mengikuti amalan biasa, output hendaklah 3 kali dan 1 kali, kerana sebaik sahaja badan fungsi dijalankan, kod dalam badan fungsi akan dikosongkan Memandangkan ia akan dikosongkan, jalankan bahagian ini seterusnya masa Semasa menulis kod, num masih harus 1, tetapi keadaan di sini adalah sedikit berbeza yang saya katakan di atas bahawa selagi pembolehubah tempatan dalam fungsi dirujuk oleh skop lain, kod ini tidak akan dimusnahkan.

Kod di atas kelihatan seperti ini

function a(){
 var num = 0;
 return function(){
  num ++;
  console.log(num);
 };
}
var b = function(){
  num ++;
  console.log(num);
 };
b();
b();
b();
Salin selepas log masuk

Kemudian skop fungsi tanpa nama yang dikembalikan oleh fungsi a dialihkan daripada fungsi a ke tetingkap Memandangkan fungsi tanpa nama ini dirujuk oleh pembolehubah global b, ia tidak akan dimusnahkan.

function a(){
 var num = 0;
 return function(){
  num ++;
  console.log(num);
 };
}
var b = {
 fn:a()
}
b.fn(); //1
b.fn(); //2
b.fn(); //3
Salin selepas log masuk

Begitu juga, kerana fungsi tanpa nama dirujuk oleh atribut fn objek b, mengubah skopnya, selagi fungsi atau pembolehubah tempatan diubah dalam skop, fungsi atau pembolehubah tempatan tidak akan musnah.
Di atas adalah keseluruhan kandungan artikel ini, saya harap anda boleh mendapatkan bantuan dalam mekanisme kitar semula js.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!