0Pricing
Zig Academy · บทเรียน

null เทียบกับ undefined

การไม่มีค่าสองรูปแบบที่แตกต่างกัน

null เทียบกับ undefined เป็นบทเรียน Zig Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Zig Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน

สองคำ สองความหมาย

Zig มีทั้ง null และ undefined และทั้งสองไม่เหมือนกัน การสับสนระหว่างสองคำนี้เป็นสาเหตุคลาสสิกของข้อผิดพลาดที่เข้าใจยาก

null หมายถึงไม่มีค่า

null คือสถานะจริงที่กำหนดไว้อย่างชัดเจน หมายความว่า optional นี้ตั้งใจเก็บความว่างเปล่า เป็นค่าที่มีความหมายและตรวจสอบได้

const x: ?i32 = null;

undefined หมายถึงยังไม่ได้ระบุ

undefined หมายความว่าพื้นที่จัดเก็บมีอยู่ แต่เนื้อหายังเป็นข้อมูลขยะ คุณกำลังรับรองว่าจะเขียนค่าจริงลงไปก่อนอ่าน

var buf: [4]u8 = undefined;

มีเฉพาะ Optional ที่เก็บ null ได้

คุณกำหนดค่า null ได้เฉพาะให้ชนิด optional เท่านั้น i32 ปกติจะไม่ยอมรับค่า null เพราะการไม่มีค่าไม่ใช่ส่วนหนึ่งของชนิด

ทุกชนิดสามารถเป็น undefined ได้

ในทางตรงกันข้าม ตัวแปรเกือบทุกชนิดสามารถเริ่มต้นเป็น undefined เพื่อจองหน่วยความจำไว้ก่อน แล้วเติมค่าในอีกสักครู่

var total: i32 = undefined;

การอ่าน null ไม่เป็นปัญหา

การตรวจสอบ optional เทียบกับ null นั้นปลอดภัยและเป็นสิ่งที่คาดหมายได้อย่างสมบูรณ์ เพราะนี่คือวิธีตรวจหาค่าที่ไม่มีอยู่

การอ่าน undefined คือข้อผิดพลาด

การอ่านค่าที่ยังเป็น undefined ถือเป็นพฤติกรรมที่ไม่ถูกต้อง แม้แต่การสร้างแบบปลอดภัยยังเติมไบต์ 0xAA ให้เพื่อเปิดเผยข้อผิดพลาดนี้

คำสัญญาที่ให้ไว้กับตนเอง

ให้คิดว่า undefined เป็นข้อตกลง: คุณสัญญาว่าจะกำหนดค่าก่อนใช้งาน หากฝ่าฝืน คุณจะอ่านข้อมูลที่ไม่มีความหมายและคาดเดาไม่ได้

รูปแบบบัฟเฟอร์ที่ใช้บ่อย

รูปแบบที่พบบ่อยคือประกาศบัฟเฟอร์เป็น undefined แล้วเติมข้อมูลทันทีจากการอ่านหรือการเรียกจัดรูปแบบ

var line: [256]u8 = undefined;

เลือกเครื่องมือให้เหมาะสม

ใช้ null เพื่อจำลองการมีค่าหรือไม่มีค่าอย่างแท้จริง ใช้ undefined เฉพาะเมื่อต้องการข้ามการกำหนดค่าเริ่มต้นที่ไม่จำเป็นและจะเขียนทับทันที

เป็นคนละคำถามกันโดยสิ้นเชิง

null ตอบคำถามว่ามีค่าอยู่หรือไม่ ส่วน undefined ตอบว่าหน่วยความจำถูกเขียนแล้วหรือยัง การแยกให้ ชัดเจน ช่วยให้คุณปลอดภัย

ตรวจสอบอย่างรวดเร็ว

คุณประกาศ var buf: [8]u8 = undefined; แล้วอ่าน buf[0] ก่อนเขียนค่า นี่คืออะไร

สรุป

คุณแยก null ซึ่งเป็นค่าที่ไม่มีอยู่จริงสำหรับ optional ออกจาก undefined ซึ่งเป็นหน่วยความจำที่ยังไม่ได้กำหนดและต้องเขียนก่อน แนวคิดสองอย่างที่ไม่ควรสับสนกัน 🧠

คำถามที่พบบ่อย

บทเรียน “null เทียบกับ undefined” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “null เทียบกับ undefined” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Zig Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “null เทียบกับ undefined”

การไม่มีค่าสองรูปแบบที่แตกต่างกัน คุณปฏิบัติ Zig Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Zig Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Zig Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “null เทียบกับ undefined” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Zig Academy นี้ได้ไหม

ได้ บทเรียน Zig Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ประกาศชนิดออปชัน
  2. แกะค่าอย่างปลอดภัยด้วย if และ orelse
  3. พอยน์เตอร์แบบออปชันและ ?*T
  4. null เทียบกับ undefined
← กลับไปที่ Zig Academy