ECMAScript ค่าสายและค่าอ้างอิง

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

ค่าระบุและอ้างอิงค่า

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

ค่าระบุ
เก็บในตาราง (stack) ของข้อมูลที่เรียบง่าย หรือที่ว่าค่าของมันจะเก็บในตำแหน่งที่ใช้เข้าถึงตัวแปร
อ้างอิงค่า
เป็นอ้างอิงที่เก็บในฝาย หรือที่ว่าค่าที่เก็บในตัวแปรคือที่อยู่หรือที่อยู่หมายของอ้างอิงที่เก็บในฝาย

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

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

หากค่าเป็นปริมาณอ้างอิง พื้นที่เก็บของมันจะถูกจัดสรรจากฝาย (heap) ของเครื่อง ตามขนาดของอ้างอิงนั้นจะเปลี่ยนแปลง ดังนั้นไม่สามารถจัดสรรในพื้นที่เก็บของตาราง (stack) ของตัวแปร เพราะจะลดความเร็วของการค้นหาตัวแปร แทนที่นี้ ค่าที่เก็บในพื้นที่เก็บของตารางจะเป็นที่อยู่หรือที่อยู่หมายของอ้างอิงที่เก็บในฝาย ที่อยู่หมายนี้มีขนาดที่คงที่ ดังนั้นการเก็บที่อยู่หมายนี้ในพื้นที่เก็บของตารางจะไม่มีผลกระทบใดๆ ต่อประสิทธิภาพของตัวแปร ตามรูปแบบดังนี้

ค่าและอ้างอิงค่าต้นฐานที่เก็บอยู่ในฮีปและสแตก

ปริมาณระบุ

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

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

ในบทบาทหลังไปอีกของเราจะนำเสนอการอธิบายลึกลงไปในประเภทของปริมาณระบุและปริมาณอ้างอิงของ ECMAScript