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