การคิดเชิงนามธรรม คือ การคัดแยกแค่สิ่งที่สำคัญออกจากรายละเอียดทั้งหมดของปัญหา เพื่อให้ได้องค์ประกอบที่เพียงพอและกระชับที่สุด
ในการเขียนโปรแกรม เราใช้วิธีการคิดเชิงนามธรรมโดยการเขียน function
Function มี data type

- data type ของ function คือ object
- function ใน JavaScript เป็น first-class object
- สามารถกำหนด (assign) function ให้เป็นค่าของตัวแปรได้
- object มี property และ method
Function มี property

ตัวอย่าง property .name บอกชื่อ function ที่ถูกอ้างถึงในตัวแปร
Function มี method

ตัวอย่าง method .toString( ) ปริ้นท์ source code ของ function ออกมาเป็น string
ดู Properties และ Methods อื่นๆ ของ function ได้ที่นี่
Higher-Order Function
ลักษณะของ higher-order function
- มี parameter เป็น function (callback function)
- มี return statement เป็น function
- หรือมีทั้งสองอย่างด้านบน

- findWordLength เป็น Higher-Order Function
- มี callback function เป็น anonymous function x => x.length (เขียน function แบบ concise body arrow)
- findWordLength มี 2 parameter ตัวแรกรับเป็น array ตัวที่สองรับเป็น function
- สร้าง array ว่างเพื่อเก็บผลลัพท์ที่ได้จากการเรียก callback function บนสมาชิกของ array ชื่อ arr1
- ใช้ for loop วนหาค่า index ของ (arr1[i])
- เรียก callback function หลังจากได้ค่า index ของ array
- callback function เรียก length property ทำให้ได้จำนวนตัวอักษรของแต่ละคำใน array