ECMAScript naunang halaga at reference halaga

ใน ECMAScript ตัวแปรสามารถมีค่าทั้งประเภทต้นฉบับและอ้านอิง

ค่าต้นฉบับและอ้านอิง

ใน ECMAScript ตัวแปรสามารถมีค่าทั้งประเภทต้นฉบับและอ้านอิง

ค่าต้นฉบับ
เป็นพื้นที่ข้อมูลง่ายๆ ที่เก็บใน stack หรือว่าค่าของมันจะเก็บในตัวแปรที่สามารถเข้าถึงได้โดยตรง
อ้านอิงค่า
เป็นอ็อบเจ็กที่เก็บใน heap หรือว่าค่าที่เก็บในตัวแปรคือ pointer หรือที่ชื่อว่า address ที่นำไปสู่ที่อยู่หรือ memory ที่เก็บอ็อบเจ็ก

ในขณะที่กำหนดค่าให้แก่ตัวแปร มีต้องการให้โปรแกรมบรรณาธิการของ ECMAScript ตรวจสอบว่าค่านั้นเป็นประเภทแบบต้นฉบับหรือประเภทอ้านอิง ในการทำตัวนี้ โปรแกรมบรรณาธิการจะต้องพยายามตรวจสอบค่านี้ก็คือประเภทแบบต้นฉบับหนึ่งของ ECMAScriptคือ Undefined、Null、Boolean、Number และ String ซึ่งเนื่องจากประเภทแบบต้นฉบับนี้มีขนาดที่เป็นค่าตั้งต้น จึงสามารถจัดเก็บในพื้นที่หน่วยความจำที่เล็กกว่า - stack ซึ่งการจัดเก็บนี้ช่วยในการค้นหาค่าของตัวแปรอย่างรวดเร็ว

ในหลายภาษาต่างๆ ตัวแสดง (string) ถูกมองเป็นประเภทอ้านอิง ไม่ใช่ประเภทแบบต้นฉบับ เพราะความยาวของตัวแสดงนั้นสามารถเปลี่ยนแปลงได้ ECMAScript ได้ทำลายแบบที่เก่านี้

ถ้าค่านั้นเป็นประเภทอ้านอิง ส่วนที่เก็บค่าของมันจะถูกจัดสรรใน heap ซึ่งเนื่องจากขนาดของอ้านอิงนั้นจะเปลี่ยนแปลง จึงไม่สามารถจัดเก็บใน stack ได้ หากเก็บใน stack จะลดความเร็วในการค้นหาค่าของตัวแปร ทั้งนี้ ค่าที่เก็บในสเต็กของตัวแปรคือที่อยู่หรือ address ของอ็อบเจ็กที่เก็บใน heap และขนาดของที่อยู่นี้เป็นค่าตั้งต้น ดังนั้นการเก็บที่อยู่นี้ในสเต็กไม่มีผลกระทบต่อการเล่นงานของตัวแปร

Ang mga orihinal na halaga at pagkilala na nakatago sa pile at stack

ประเภทแบบต้นฉบับ

เช่นเดียวกับที่เคยกล่าวมาก่อน ECMAScript มี 5 ประเภทแบบต้นฉบับ (primitive type) คือ Undefined、Null、Boolean、Number และ String โดย ECMA-262 ใช้ข้อความประเภท (type)นิยามว่าเป็นชุดของค่า ในแต่ละประเภทแบบต้นฉบับ นิยามว่าความกว้างของค่าที่มีและรูปแบบแสดงที่ใช้ในประเภทนี้

ECMAScript มีสัญญาณ typeof ที่ใช้เพื่อตรวจสอบว่าค่าใดนั้นอยู่ในขอบเขตประเภทใด สามารถใช้สัญญาณนี้เพื่อตรวจสอบว่าค่าใดนั้นเป็นประเภทแบบต้นฉบับ และยังสามารถตรวจสอบว่าประเภทแบบต้นฉบับที่ค่านั้นเป็นได้

ในบทที่จะมาต่อไป พวกเราจะเผยแพร่ให้คุณเข้าใจลึกลงไปในประเภทของประเภทแบบต้นฉบับและประเภทอ้านอิงของ ECMAScript