Walaupun konsensus meluas bahawa menghantar rentetan kepada setTimeout adalah tidak diingini, mungkin terdapat keadaan di mana ini latihan terhibur. Ini menimbulkan persoalan: adakah terdapat sebab yang sah untuk melanggar konvensyen ini?
Sebab konvensional untuk menolak parameter rentetan adalah kerana ia dilaksanakan dalam skop global, menimbulkan cabaran prestasi dan potensi kelemahan keselamatan. Sintaks moden mengelak pendekatan ini memihak kepada menghantar fungsi sebagai argumen untuk setTimeout:
setTimeout(function() { doSomething(someVar); }, 10000);
Pertimbangkan senario di mana fungsi atau pembolehubah wujud secara global tetapi ditindih secara setempat. Pembangun mungkin mempertimbangkan menggunakan sintaks yang ditamatkan untuk mengakses contoh global:
setTimeout('doSomething(someVar)', 10000);
Walau bagaimanapun, mengakses pembolehubah global melalui objek tetingkap (cth., window.globalVar) menghapuskan keperluan untuk pengecualian ini.
Elaun parameter rentetan dalam setTimeout dan setInterval mungkin disebabkan oleh keutamaan sejarahnya. Pada mulanya, fungsi ini hanya menerima rentetan yang mengandungi kod untuk dilaksanakan. Pengenalan objek Fungsi sebagai hujah yang sah datang kemudian. Tidak membenarkan parameter rentetan secara retroaktif akan memecahkan kod sedia ada.
Atas ialah kandungan terperinci Adakah Terdapat Pengecualian untuk Penamatan Parameter Rentetan dalam setTimeout?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!