⊗jsPmFCPS 273 of 505 menu

อัฒภาคเพื่อความปลอดภัยใน IIFE

ตอนนี้ให้ฟังก์ชันที่เรียกใช้ทันทีของเรา ไม่ได้เริ่มต้นด้วยเครื่องหมายบวก แต่ถูกห่อหุ้มด้วยวงเล็บ แบบนี้:

(function() { console.log(1); // แสดง 1 })();

ให้ตัวแปร num ถูกกำหนดจากภายนอก ฟังก์ชัน:

let num = 1; // มีอัฒภาค (function() { console.log(num); // แสดง 1 })();

ตอนนี้สมมติว่าเราลืมใส่อัฒภาค:

let num = 1 (function() { console.log(num); //!! จะเกิดข้อผิดพลาด })();

ปรากฎว่าโค้ดดังกล่าวจะเกิดข้อผิดพลาด เพราะว่า JavaScript มองฟังก์ชันของเรา ว่าเป็นความต่อเนื่องของคำสั่งในบรรทัดแรก

เพื่อหลีกเลี่ยงปัญหาดังกล่าว ก่อนเรียก ฟังก์ชันทันที จำเป็นต้องใส่ อัฒภาคเสมอ แบบนี้:

let num = 1 ;(function() { console.log(num); // แสดง 1 })();

อาจดูเหมือนว่าปัญหานี้ถูกยัดเยียด แต่จริง ๆ แล้ว ไม่ใช่เลย อาจมี สถานการณ์ที่หน้าเว็บของคุณโหลด หลายสคริปต์จากไฟล์แยกต่างหาก ใน กรณีนี้ตอนท้ายของไฟล์หนึ่งอาจจะ ไม่มีอัฒภาคและสิ่งนี้จะนำไปสู่ ปัญหาทันทีหากไฟล์ที่สองเริ่มต้น ด้วยการเรียกฟังก์ชันทันที

ดังนั้น ใส่อัฒภาคเสมอ-เสมอ ก่อนเรียกฟังก์ชันทันที แม้ว่า ในขณะนี้คุณจะมั่นใจว่า จะไม่มีปัญหา แต่ปัญหาอาจเกิดขึ้นในภายหลัง

ลองนำสิ่งที่กล่าวมาข้างต้นไปใช้และเรียกฟังก์ชัน ทันที โดยใส่อัฒภาคไว้ด้านหน้า:

;(function() { console.log(1); // แสดง 1 })();

ลองกำหนดโดยไม่รันโค้ด ว่าจะแสดงอะไร ในคอนโซล:

let str = 'str'; (function() { console.log(1); })();

ลองกำหนดโดยไม่รันโค้ด ว่าจะแสดงอะไร ในคอนโซล:

let str = 'str' (function() { console.log(1); })();
ไทย
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣTürkmenTürkçeЎзбекOʻzbekTiếng Việt
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ