ECMAScript ਮੂਲ ਮੁੱਲ ਅਤੇ ਹਵਾਲੇ ਮੁੱਲ

在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值。

原始值和引用值

在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值。

原始值
存储在栈(stack)中的简单数据,也就是说,它们的值直接存储在变量访问的位置。
引用值
存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。

为变量赋值时,ECMAScript 的解释程序必须判断该值是原始类型,还是引用类型。要实现这一点,解释程序则需尝试判断ਇਹ ਮੁੱਲ ECMAScript ਦੇ ਮੂਲ ਤੱਤਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਇੱਕ ਹੈ ਕਿ ਨਹੀਂਯਾਨੀ Undefined, Null, Boolean, Number ਅਤੇ String ਕਿਸਮ। ਇਹ ਮੂਲ ਤੱਤ ਸਥਾਨਕ ਹਨ, ਇਸ ਲਈ ਇਹਨਾਂ ਨੂੰ ਛੋਟੇ ਮੈਮੋਰੀ ਖੇਤਰ - ਸਟੈਕ ਵਿੱਚ ਭੰਡਾਰਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ ਭੰਡਾਰਿਤ ਕਰਨ ਨਾਲ ਮੁੱਲ ਦੀ ਚੋਖਰੀ ਸਮੇਂ ਵਿੱਚ ਹੋਣ ਨਾਲ ਸੁਵਿਧਾਜਨਕ ਹੁੰਦਾ ਹੈ。

ਕਈ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ, ਸਟਰਿੰਗ ਹਵਾਲਾ ਤੱਤ ਦੇ ਰੂਪ ਵਿੱਚ ਦੇਖੀਆਂ ਜਾਂਦੀਆਂ ਹਨ, ਨਹੀਂ ਮੂਲ ਤੱਤ, ਕਿਉਂਕਿ ਸਟਰਿੰਗ ਦੀ ਲੰਬਾਈ ਬਦਲ ਸਕਦੀ ਹੈ। ECMAScript ਨੇ ਇਹ ਪਰੰਪਰਾ ਤੋਂ ਬੇਸ਼ਕ ਕੀਤਾ ਹੈ。

ਇਕ ਮੁੱਲ ਹਵਾਲਾ ਤੱਤ ਹੈ, ਮਤਲਬ ਇਹ ਮੁੱਲ ਹੈ ਕਿ ਸਟੈਕ (heap) ਵਿੱਚ ਭੰਡਾਰਿਤ ਇੱਕ ਆਬਜੈਕਟ ਹੈ, ਮਤਲਬ ਇਸ ਵਾਰੀ ਦੇ ਮੁੱਲ ਹੈ ਇੱਕ ਪਾਇੰਟਰ (pointer), ਜੋ ਆਬਜੈਕਟ ਦੀ ਸਮਗਰੀ ਦੀ ਸਥਿਤੀ ਵੱਲ ਸੁਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ। ਪਾਇੰਟਰ ਦਾ ਸਾਈਜ਼ ਨਿਸ਼ਚਿਤ ਹੈ, ਇਸ ਲਈ ਇਸ ਨੂੰ ਸਟੈਕ ਵਿੱਚ ਭੰਡਾਰਿਤ ਕਰਨ ਨਾਲ ਮੁੱਲ ਦੀ ਚੋਖਰੀ ਸਮੇਂ ਵਿੱਚ ਹੋਣ ਨਾਲ ਕੋਈ ਨਕਾਰਾਤਮਕ ਪ੍ਰਭਾਵ ਨਹੀਂ ਪੈਂਦਾ। ਨਿਮਨਲਿਖਤ ਵਿੱਚ ਵਿਖਾਇਆ ਗਿਆ ਹੈ:

ਹੇਠਲੇ ਸਟੈਕ ਅਤੇ ਸਟੈਕ ਵਿੱਚ ਸਟੋਰ ਕੀਤੇ ਗਏ ਮੂਲ ਮੁੱਲ ਅਤੇ ਹਵਾਲੇ ਮੁੱਲ

ਮੂਲ ਤੱਤ

ਜਿਵੇਂ ਕਿ ਪਹਿਲਾਂ ਦੱਸਿਆ ਗਿਆ ਹੈ, ECMAScript ਵਿੱਚ 5 ਮੂਲ ਤੱਤ (primitive type) ਹਨ, ਜਿਵੇਂ ਕਿ Undefined, Null, Boolean, Number ਅਤੇ String।ECMA-262 ਨੇ ਇਸ ਪਦਾਂ ਦੇ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤੇ ਹਨ:ਪ੍ਰਕਾਰ (type)ਮੁੱਲ ਦੇ ਇੱਕ ਸੈਕਸਨ ਦੇ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤੇ ਗਏ ਹਨ, ਹਰ ਮੂਲ ਤੱਤ ਨੇ ਇਸ ਵਿੱਚ ਸ਼ਾਮਲ ਮੁੱਲਾਂ ਦੇ ਪੱਧਰ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਸਥਾਨਕ ਪ੍ਰਦਰਸ਼ਨ ਦੇ ਰੂਪ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤੇ ਗਏ ਹਨ。

ECMAScript ਨੇ typeof ਕੰਮੀ ਦੇ ਇੱਕ ਕੰਮੀ ਪ੍ਰਦਾਨ ਕੀਤਾ ਹੈ ਕਿ ਕਿਸ ਤਰ੍ਹਾਂ ਦੇ ਤੱਤਾਂ ਵਿੱਚ ਇੱਕ ਮੁੱਲ ਹੈ। ਇਸ ਕੰਮੀ ਦੀ ਵਰਤੋਂ ਨਾਲ ਇੱਕ ਮੁੱਲ ਕਿਸ ਤਰ੍ਹਾਂ ਦੇ ਮੂਲ ਤੱਤ ਹੈ ਨਾਲ ਨਿਰਧਾਰਿਤ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ: ਜੇਕਰ ਇਹ ਮੂਲ ਤੱਤ ਹੈ, ਤਾਂ ਇਹ ਕਿਸ ਮੂਲ ਤੱਤ ਹੈ ਨਾਲ ਨਿਰਧਾਰਿਤ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ。

ਉਸ ਬਾਅਦ ਦੇ ਚੈਪਟਰਾਂ ਵਿੱਚ, ਅਸੀਂ ਤੁਹਾਨੂੰ ECMAScript ਦੇ ਮੂਲ ਤੱਤਾਂ ਅਤੇ ਹਵਾਲਾ ਤੱਤਾਂ ਦੀ ਗਹਿਰਾਈ ਨਾਲ ਸਿੱਖਾਵਾਂਗੇ。