Melalui Rentetan ke setTimeout: Sebab Pengelakan dan Pengecualian
Melalukan rentetan ke setTimeout atau rakan sejawatannya setInterval biasanya tidak disukai apabila devido kebimbangan untuk melaksanakan dalam skop global, isu prestasi yang berpotensi dan kelemahan keselamatan. Alternatif yang disyorkan ialah menggunakan fungsi tanpa nama sebagai hujah pertama.
Walau bagaimanapun, mungkin terdapat rahmat menyelamatkan dalam situasi tertentu. Jika pengaturcara berhasrat untuk mengakses fungsi atau pembolehubah yang wujud dalam skop global tetapi telah ditindih secara setempat, mereka boleh mempertimbangkan untuk menggunakan sintaks rentetan yang tidak digunakan lagi. Namun begitu, pendekatan ini disifatkan sebagai amalan pengaturcaraan yang lemah kerana potensi untuk membayangi pembolehubah.
Dalam kebanyakan kes, adalah mungkin untuk mengakses pembolehubah global sebagai sifat objek tetingkap (cth., window.globalVar), menjadikannya tidak perlu menggunakan panggilan fungsi berasaskan rentetan. Oleh itu, sangat tidak mungkin untuk menghadapi senario di mana menggunakan rentetan sebagai argumen pertama untuk setTimeout atau setInterval akan benar-benar bermanfaat.
Secara sejarah, ketersediaan tunggal rentetan kod sebagai hujah untuk fungsi ini berpunca daripada Had JavaScript 1.0. Pengenalan rujukan objek Fungsi sebagai hujah hanya berlaku dengan JavaScript 1.2. Mengekalkan keserasian dengan penyemak imbas dan skrip lama menghalang pembangun daripada menghapuskan sepenuhnya panggilan berasaskan rentetan. Dengan memahami kedua-dua kaveat dan pengecualian yang jarang berlaku, pengaturcara boleh membuat keputusan termaklum apabila menulis kod yang melibatkan setTimeout dan setInterval.
Atas ialah kandungan terperinci Bolehkah Panggilan Fungsi Berasaskan Rentetan dengan setTimeout Dijustifikasikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!