Rumah >hujung hadapan web >tutorial js >Isu yang perlu anda perhatikan apabila menggunakan ciri penutupan petua setTimeout()_javascript Javascript

Isu yang perlu anda perhatikan apabila menggunakan ciri penutupan petua setTimeout()_javascript Javascript

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBasal
2016-05-16 16:35:531494semak imbas

setTimeout selalunya digunakan untuk menangguhkan pelaksanaan fungsi tertentu Penggunaannya ialah:

Salin kod Kod adalah seperti berikut:

setTimeout(function(){

}, tamat masa);

Kadangkala setTimeout(function...,0) digunakan untuk pemprosesan tak segerak sebagai contoh:

Salin kod Kod adalah seperti berikut:

fungsi f(){
… // bersiaplah
setTimeout(function(){
.... // buat sesuatu
}, 0);

kembali …;
}

Fungsi f kembali sebelum pemproses fungsi ditetapkan oleh setTimeout;

Berhati-hati terutamanya apabila menggunakan pemprosesan tak segerak, terutamanya apabila menggunakan ciri penutupan

Contohnya:

Salin kod Kod adalah seperti berikut:
untuk(var i = 0; i < 10; i ){
setTimeout(function(){
console.log(i);
}, 0);
}
Bagi pelajar yang pertama kali menggunakan kaedah ini, mereka mungkin berfikir bahawa program ini akan mencetak 0...9, tetapi ia sebenarnya mencetak 10 10s

Masalahnya ialah apabila gelung selesai, fungsi itu dilaksanakan dan i telah menjadi 10, iaitu 10 digunakan dalam console.log(i)!

Jika tujuan anda adalah untuk mencetak 0...9, maka anda boleh menukar cara dan menggunakan parameter fungsi untuk menyimpan 0...9 (malah, penutupan juga digunakan):

Salin kod Kod adalah seperti berikut:
untuk(var i = 0; i < 10; i ){
setTimeout((fungsi(i){
kembalikan fungsi(){
console.log(i);
}
})(i), 0);
}

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