⊗jsPmFTNFE 235 of 505 menu

นิพจน์ฟังก์ชันที่มีชื่อใน JavaScript

สมมติว่าเรามีนิพจน์ฟังก์ชันแบบนี้:

let test = function() { console.log('!'); }; test(); // จะแสดง '!'

ลองตั้งชื่อให้ฟังก์ชันของเราว่า func:

let test = function func() { console.log('!'); }; test();

อย่างที่คุณรู้แล้ว เราไม่สามารถอ้างอิงถึงฟังก์ชันด้วยชื่อนี้ได้:

let test = function func() { console.log('!'); }; test(); // จะแสดง '!' func(); // จะเกิดข้อผิดพลาด

แล้วตั้งชื่อฟังก์ชันไปทำไมถ้ามันจะไม่สามารถเข้าถึงได้? ประเด็นคือชื่อนี้จะ ไม่สามารถเข้าถึงได้จากภายนอกฟังก์ชัน แต่สามารถเข้าถึงได้ภายใน ฟังก์ชันนั้น

ลองทดสอบดู:

let test = function func() { console.log(func); // ฟังก์ชันจะแสดง source code ของตัวมันเอง }; test(); // เรียกใช้ฟังก์ชัน

ลองเรียกใช้ฟังก์ชันของเรา inside ตัวมันเอง:

let test = function func() { console.log('!'); // แสดง '!' func(); // เรียกใช้ตัวมันเอง }; test();

หากรันโค้ดนี้ จะมีการแสดงผลลงคอนโซล จำนวนไม่สิ้นสุด

ที่จริงแล้วฟังก์ชันของเราสามารถถูกเรียกใช้ ภายในตัวมันเองได้ไม่เฉพาะในชื่อ func เท่านั้น แต่ในชื่อ test ก็ได้:

let test = function func() { console.log('!'); test(); // เรียกใช้ตัวมันเอง }; test();

แล้วความแตกต่างคืออะไร? ความแตกต่างคือชื่อ test - นี่เป็นแค่ตัวแปร ในกระบวนการ ทำงานของสคริปต์ ฟังก์ชันของเราอาจถูกเขียน ลงในตัวแปรอื่นหรือส่งผ่านเป็นพารามิเตอร์ - ในกรณีนี้การเชื่อมโยงระหว่างตัวแปร test และฟังก์ชันอาจหายไป

ส่วนชื่อ func นั้นถูกผูกไว้กับฟังก์ชันอย่างแน่นหนา โดยเฉพาะเพื่อให้สามารถอ้างอิงถึง ฟังก์ชันของเรา within ตัวมันเองได้

Function Expression ประเภทนี้ที่มีชื่อฟังก์ชัน เรียกว่า นิพจน์ฟังก์ชันที่มีชื่อ

ไทย
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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ