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

WBOY
Lepaskan: 2016-05-16 16:35:53
asal
1441 orang telah melayarinya

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);
}

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