قيم الأساسيّة والمؤشّر في ECMAScript

في ECMAScript، يمكن أن يكون هناك نوعان من القيم للمتغيرات، وهي القيم الأساسية والقيم الاستدلالية.

القيم الأساسية والقيم الاستدلالية

في ECMAScript، يمكن أن يكون هناك نوعان من القيم للمتغيرات، وهي القيم الأساسية والقيم الاستدلالية.

القيمة الأساسية
السجلات البسيطة المخزنة في الحجم (stack)، أي أن القيم مباشرة مخزنة في الموقع الذي يمكن الوصول إليها من المتغير.
القيمة الاستدلالية
المعادلات المخزنة في الحجم (heap)، أي أن القيمة المخزنة في المتغير هي مرجع (pointer) يشير إلى الموقع في ذاكرة المعادلة.

عند تعيين القيمة إلى المتغير، يجب على محول ECMAScript�断 ما إذا كانت القيمة نوعًا أساسيًا أم نوعًا استدلاليًا. لتحقيق ذلك، يجب على المحول محاولة تحديدهل القيمة من نوع الأساسي ECMAScript، وهي Undefined، Null، Boolean، Number و String. نظرًا لأن مساحة هذه الأنواع الأساسية ثابتة، يمكن تخزينها في منطقة ذاكرة أصغر - الحجم. حيث أن هذا التخزين يسهل البحث السريع عن قيمة المتغير.

في العديد من اللغات، يتم اعتبار الأنواع النصية كأنواع استدلالية وليس كأنواع أساسية، لأن طول الأنواع النصية قابل للتغيير. قام ECMAScript بتغيير هذا التقليد.

إذا كانت القيمة من نوع الاستدلال، فإن مساحة التخزين الخاصة بها ستُوزع من الحجم. نظرًا لأن حجم القيمة الاستدلالية قد يتغير، فإنه لا يمكن وضعها في الحجم، حيث قد يؤدي ذلك إلى انخفاض سرعة البحث عن المتغيرات. عوضًا عن ذلك، يتم تخزين القيمة في مساحة المتغيرات كمرجع إلى الموقع في ذاكرة الحجم. حيث أن حجم المرجع ثابت، فإن تخزينه في الحجم لا يؤثر على أداء المتغير.

القيم الأصلية والمراجع المخزنة في المخزن والمقود

النوع الأساسي

كما ذكرنا سابقًا، يحتوي ECMAScript على خمس أنواع أساسية (الأنواع الأساسية)، وهي Undefined، Null، Boolean، Number و String. يحدد ECMA-262 المصطلحالنوع (النوع)مجموعة من القيم، حيث يحدد كل نوع أساسي نطاق القيم التي يحتويها وكيفية تمثيلها بالكلمات المكتوبة.

يقدم ECMAScript عمود typeof لتحديد ما إذا كانت القيمة ضمن نطاق معين من الأنواع. يمكن استخدام هذا العمود لتحديد ما إذا كانت القيمة تمثل نوعًا أساسيًا: إذا كانت نوعًا أساسيًا، يمكن أيضًا تحديد أي نوع أساسي يمثل.

في الفصول القادمة، سنقدم لك شرحًا مفصلاً عن الأنواع الأساسية والأنواع المفيدة لـ ECMAScript.