วิธีการตรวจสอบประเภทฟังก์ชันใน JavaScript

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

ในกรณีง่าย ๆ การตรวจสอบด้วยสายตา ไม่ใช่เรื่องยาก แต่จะตรวจสอบได้อย่างไรว่า คุณทำถูกต้อง? ใช้ความแตกต่าง ระหว่าง Function Declaration กับ Function Expression: อย่างแรกสามารถถูกเรียกใช้งานได้ก่อนนิยาม, แต่อย่างหลังทำไม่ได้

สมมติว่าเรามีฟังก์ชันดังนี้:

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

ลองเรียกใช้ฟังก์ชันนี้ก่อนการนิยาม:

javascripttest(); // จะแสดงข้อผิดพลาดในคอนโซล แสดงว่าเป็น Function Expression

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

นี่เป็นอีกตัวอย่างหนึ่ง:

javascriptfunc(); // จะแสดง '!' แสดงว่าเป็น Function Declaration

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

ลองใส่เครื่องหมายบวกหน้าฟังก์ชันของเรา:

javascriptfunc(); // จะแสดงข้อผิดพลาดในคอนโซล แสดงว่าเป็น Function Expression

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

เนื่องจากฟังก์ชันด้านบนเป็น Function Expression และไม่ได้ถูกกำหนดค่าให้กับตัวแปรใด ๆ ดังนั้น จึงไม่มีวิธีเรียกใช้งานมันได้ เพราะชื่อ func นั้น จะไม่สามารถเข้าถึงได้

Задание 1

กำหนดว่า ฟังก์ชันที่แสดงเป็น Function Declaration หรือ Function Expression:

javascriptlet test = function func() {
  console.log('!');
}
Задание 2

กำหนดว่า ฟังก์ชันที่แสดงเป็น Function Declaration หรือ Function Expression:

javascriptconsole.log(
  function func() {
    console.log('!');
  }
);
Задание 3

กำหนดว่า ฟังก์ชันที่แสดงเป็น Function Declaration หรือ Function Expression:

javascript+function func() {
  console.log('!');
}
Задание 4

กำหนดว่า ฟังก์ชันที่แสดงเป็น Function Declaration หรือ Function Expression:

javascriptfunction func() {
  console.log('!');
}