Rumah >hujung hadapan web >tutorial js >Mengapa Tanda Kurung Sentiasa Mengelilingi Panggilan Fungsi dalam `setTimeout`?

Mengapa Tanda Kurung Sentiasa Mengelilingi Panggilan Fungsi dalam `setTimeout`?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-23 18:27:17718semak imbas

Why Don't Parentheses Always Surround Function Calls in `setTimeout`?

Bila Menggunakan Tanda Kurung dalam Panggilan Fungsi

Apabila meneliti kod berikut:

var myFunction = function() {
  setTimeout(myFunction, 1000);
}
myFunction();

Seseorang mungkin tertanya-tanya mengapa panggilan fungsi dalam setTimeout tidak memerlukan kurungan manakala seruan fungsi bebas tidak.

Memahami Perbezaan

  • myFunction: Nama ini merujuk kepada definisi fungsi.
  • myFunction(): Penambahan kurungan memanggil fungsi.

Argumen Fungsi Tamat Masa

setTimeout mengambil rujukan fungsi sebagai salah satu hujahnya. Dalam kod yang diberikan, myFunction dirujuk sebagai fungsi panggil balik.

Kurungan dalam Argumen Tamat Masa

Memasukkan kurungan dalam setTimeout(myFunction(), 1000) boleh menyebabkan akibat yang tidak diingini jika myFunction mengembalikan fungsi (cth., menggunakan fungsi anak panah). Dalam kes sedemikian, setTimeout akan menerima nilai pulangan myFunction dan bukannya rujukan fungsi itu sendiri. Ini boleh membawa kepada pelaksanaan fungsi berulang atau tingkah laku yang tidak dijangka.

Oleh itu, apabila menggunakan setTimeout atau kaedah serupa yang mengharapkan rujukan fungsi, secara amnya disyorkan untuk meninggalkan kurungan untuk hujah fungsi.

Atas ialah kandungan terperinci Mengapa Tanda Kurung Sentiasa Mengelilingi Panggilan Fungsi dalam `setTimeout`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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