ฟังก์ชันที่มีชื่อ แต่เป็น Function Expression ใน JavaScript

ตอนนี้เรามาสร้างฟังก์ชันที่จะมีชื่อ แต่จะเป็น Function Expression เพราะมีส่วนร่วมในการแสดงออก (expression):

javascript+function func() {
  console.log('!');
}

น่าสนใจที่เราจะไม่สามารถเข้าถึงฟังก์ชันของเราได้ด้วยชื่อ func ซึ่งจะทำให้เกิดข้อผิดพลาด:

javascript+function func() {
  console.log('!');
}

func(); //!! จะทำให้เกิดข้อผิดพลาด

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

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

test(); // จะแสดง '!'

อีกครั้ง: ฟังก์ชันที่เป็น functional expression ไม่สามารถถูกเรียกด้วยชื่อของมันได้ ฟังก์ชันดังกล่าวสามารถถูกเรียกได้เฉพาะด้วยการใช้ตัวแปรที่ฟังก์ชันนั้นถูกบันทึกไว้

แต่ถึงกระนั้น functional expression ก็สามารถมีชื่อฟังก์ชันได้ ซึ่งจะถูกต้องตามหลักไวยากรณ์ เราจะมาวิเคราะห์กันในบทเรียนถัดไปว่าสิ่งนี้มีไว้เพื่ออะไร

มาสรุปกัน: ฟังก์ชันจะเป็น Function Declaration หรือ Function Expression ไม่ใช่เพราะว่ามีหรือไม่มีชื่อ แต่เป็นเพราะมันมีส่วนร่วมในการแสดงออก (expression) หรือไม่

อย่างที่คุณเห็นข้างต้น ฟังก์ชันที่ไม่มีชื่ออาจถูกมองว่าเป็น Function Declaration ในขณะที่ฟังก์ชันที่มีชื่ออาจเป็น Function Expression