ฟังก์ชันที่มีชื่อ แต่เป็น Function Expression ใน JavaScript
ตอนนี้เรามาสร้างฟังก์ชันที่จะมีชื่อ แต่จะเป็น Function Expression เพราะมีส่วนร่วมในการแสดงออก (expression):
+function func() {
console.log('!');
}
น่าสนใจที่เราจะไม่สามารถเข้าถึงฟังก์ชันของเราได้ด้วยชื่อ func ซึ่งจะทำให้เกิดข้อผิดพลาด:
+function func() {
console.log('!');
}
func(); //!! จะทำให้เกิดข้อผิดพลาด
เพื่อให้สามารถเรียกใช้ฟังก์ชันของเราได้ เราจำเป็นต้องกำหนดค่าให้กับตัวแปรบางตัว:
let test = function func() {
console.log('!');
};
test(); // จะแสดง '!'
อีกครั้ง: ฟังก์ชันที่เป็น functional expression ไม่สามารถถูกเรียกด้วยชื่อของมันได้ ฟังก์ชันดังกล่าวสามารถถูกเรียกได้เฉพาะด้วยการใช้ตัวแปรที่ฟังก์ชันนั้นถูกบันทึกไว้
แต่ถึงกระนั้น functional expression ก็สามารถมีชื่อฟังก์ชันได้ ซึ่งจะถูกต้องตามหลักไวยากรณ์ เราจะมาวิเคราะห์กันในบทเรียนถัดไปว่าสิ่งนี้มีไว้เพื่ออะไร
มาสรุปกัน: ฟังก์ชันจะเป็น Function Declaration หรือ Function Expression ไม่ใช่เพราะว่ามีหรือไม่มีชื่อ แต่เป็นเพราะมันมีส่วนร่วมในการแสดงออก (expression) หรือไม่
อย่างที่คุณเห็นข้างต้น ฟังก์ชันที่ไม่มีชื่ออาจถูกมองว่าเป็น Function Declaration ในขณะที่ฟังก์ชันที่มีชื่ออาจเป็น Function Expression