Rumah  >  Artikel  >  hujung hadapan web  >  js melaksanakan kemahiran pelaksanaan kod_javascript gelung tak segerak

js melaksanakan kemahiran pelaksanaan kod_javascript gelung tak segerak

WBOY
WBOYasal
2016-05-16 15:15:271331semak imbas

Soalan
Anda mungkin menghadapi masalah apabila melaksanakan gelung tak segerak.

Mari cuba menulis kaedah tak segerak yang mencetak nilai indeks gelung sekali dalam gelung.

<script>
for(var i = 0; i < 5; i++){
setTimeout(function(){
document.writeln(i);document.writeln("<br />");
},1000);
}
</script>

Output program di atas ialah:

5
5
5
5
5

Sebab

Setiap tamat masa (masa tamat) menunjuk kepada i asal, bukan salinannya. Jadi, gelung for menambah i kepada 5, kemudian tamat masa berjalan dan memanggil nilai semasa i (iaitu 5).

Penyelesaian

Terdapat beberapa cara berbeza untuk menyalin i. Kaedah yang paling biasa dan biasa digunakan ialah membuat penutupan dengan mengisytiharkan fungsi dan menghantar i kepada fungsi ini. Kami menggunakan fungsi panggilan kendiri di sini.

Jalankan kod

<script>
for(var i = 0; i < 5; i++){
(function(num){
setTimeout(function(){
document.writeln(num);document.writeln("<br />");
},1000);
})(i);
}
</script>

Output

0
1
2
3
4

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