พื้นฐาน JavaScript: Callbacks, Objects และ Execution

JavaScript ทำงานได้สองรูปแบบคือ: synchronous และ asynchronous

โค้ดแบบ synchronous จะทำงานทีละบรรทัด โดย engine จะทำงานหนึ่งอย่างให้เสร็จสิ้นก่อนที่จะเริ่มงานถัดไป ซึ่งจะขัดขวาง (block) ไม่ให้งานถัดไปทำงานได้ทันที

โค้ดแบบ asynchronous ช่วยให้งานต่างๆ สามารถทำงานแยกจากกันได้ คุณสามารถเริ่มงานหนึ่งแล้วข้ามไปทำงานถัดไปได้ในระหว่างที่รอ ซึ่งช่วยเพิ่มประสิทธิภาพให้กับเว็บแอปพลิเคชัน

แนวคิดหลักของ asynchronous: • Callbacks: ฟังก์ชันที่ถูกส่งเข้าไปในอีกฟังก์ชันหนึ่งเพื่อเรียกใช้งานในภายหลัง • Promises: ออบเจกต์ที่แสดงถึงผลลัพธ์ของการทำงาน • Async/Await: ไวยากรณ์สมัยใหม่ที่ช่วยให้โค้ดแบบ asynchronous อ่านง่ายขึ้น • Event Loop: ระบบที่จัดการการทำงานของงานต่างๆ

ทำความเข้าใจเรื่อง Processes และ Threads

Process คือโปรแกรมที่กำลังทำงานอยู่ • Processes มีความเป็นอิสระต่อกัน (isolated) • ไม่ใช้หน่วยความจำ (memory) ร่วมกัน • Process สามารถสร้าง child processes ได้ • ใช้เวลาในการสิ้นสุดการทำงาน (terminate) นานกว่า

Thread คือส่วนหนึ่งของ process • หนึ่ง process สามารถมีได้หลาย thread • Threads ใช้หน่วยความจำร่วมกัน • ใช้เวลาในการสิ้นสุดการทำงาน (terminate) น้อยกว่า

Callback Function คืออะไร?

Callback คือฟังก์ชันที่ถูกส่งเข้าไปเป็น argument โดยฟังก์ชันภายนอกจะเรียกใช้ callback นี้เพื่อทำงานให้เสร็จสิ้น ใช้ callback สำหรับ: • งานแบบ asynchronous เช่น การดึงข้อมูล (fetching data) • การจัดการเหตุการณ์ (event handling) เช่น การคลิกปุ่ม • การสร้างโค้ดที่นำกลับมาใช้ใหม่ได้ (reusable code)

JavaScript Objects

Object จะเก็บข้อมูลในรูปแบบคู่ key-value โดยที่ key จะเป็นตัวระบุค่า (value) ซึ่งค่าเหล่านี้อาจเป็นข้อมูลพื้นฐาน (primitives), object อื่นๆ หรือฟังก์ชันก็ได้

คุณสามารถสร้าง object ได้สองวิธี:

  1. Object Literals: ใช้เครื่องหมายปีกกาเพื่อกำหนดคุณสมบัติ (properties) ตัวอย่าง: let user = {name: "Sourav", age: 23};

  2. Object Constructor: ใช้คำสั่ง new Object() ตัวอย่าง: let user = new Object();

Object สามารถเปลี่ยนแปลงค่าได้ (mutable) คุณสามารถเพิ่ม เปลี่ยนแปลง หรือลบคุณสมบัติได้ตลอดเวลา ซึ่งช่วยให้คุณจัดกลุ่มข้อมูลที่เกี่ยวข้องกันไว้ด้วยกันได้

Source: https://dev.to/karthick_07/understanding-callback-functions-objects-and-synchronous-programming-a-comprehensive-guide-27lb