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