انتقل إلى المحتوى

٥.٥ الكلمة const

التصريح باستخدام const

التمرين 1: صرّح عن متغير باسم num، واضبط قيمته على 10.

var num = 10;

console.log(num);

النتيجة هي: 10

التمرين 2: أعد تنفيذ التمرين 1، وأعد التصريح عن num بـ const .

const num = 10;

console.log(num);

النتيجة هي: 10

التمرين 3: ارجع إلى التمرين 2؛ أسند القيمة 20 على num .

const num = 10;

num = 20;
console.log(num);

النتيجة هي: Uncaught TypeError: Assignment to constant variable.

١- const

لا يمكن إعادة إسناد متغير صُرّح عنه باستخدام const.


التصريح والإسناد

التمرين 4: صرّح عن متغير باسم name بـ var ، ثم أسند "Sami" إليه.

var name;

name = "Sami";
console.log(name);

النتيجة هي: Sami

التمرين 5: أعد تنفيذ التمرين 4، لكن صرّح عن المتغير باستخدام const .

const name;

name = "Sami";
console.log(name);

النتيجة هي: Uncaught SyntaxError: Missing initializer in const declaration

٢- const

العامل const يجب تهيئة متغيرات const عند التصريح عنها.


القيم الثابتة

التمرين 6: صرّح عن متغير x بـ const ، وأسند 145 إليه.

const x = 145;

console.log(x);

النتيجة هي: 145

التمرين 7: صرّح عن متغير myObj بـ const ، وأسند {a: 1, b: 2} إليه.

const myObj = {a: 1, b: 2};

console.log(myObj);

النتيجة هي: {a:1, b:2}

التمرين 8: ارجع إلى التمرين 7؛ حدّث myObj.b على 20.

const myObj = {a: 1, b: 2};

myObj.b = 20;

console.log(myObj);

النتيجة هي: {a: 1, b: 20}

٣- const

العامل const تثبّت الارتباط بالقيمة ولا تجعل الكائن نفسه غير قابل للتعديل؛ لذا يمكن تعديل خصائص كائن مرتبط بمتغير const.


نطاق const

نطاق الدالة

التمرين 9: اطبع قيمة local خارج الدالة التالية.

function func(){
  var local = "Hey, I am local variable";
  return local;
}

console.log(local);

النتيجة هي: Uncaught ReferenceError: local is not defined

التمرين 10: اطبع قيمة local خارج الدالة التالية.

function func(){
  const local = "Hey, I am local variable";
  return local;
}

console.log(local);

النتيجة هي: Uncaught ReferenceError: local is not defined

نطاق الدالة

نطاق الدالة يقع داخلها.

نطاق الكتلة

التمرين 11: اطبع قيمة myBlockVar خارج القوسين المعقوفين {}.

{
  var myBlockVar = "I am inside a block";
}

console.log(myBlockVar);

النتيجة هي: I am inside a block

التمرين 12: اطبع قيمة myBlockVar خارج القوسين المعقوفين {}.

{
  const myBlockVar = "I am inside a block";
}

console.log(myBlockVar);

النتيجة هي: Uncaught ReferenceError: myBlockVar is not defined

التمرين 13: اطبع قيمة myBlockVar خارج if .

if(true){
  var myBlockVar = true;
}

console.log(myBlockVar);

النتيجة هي: true

التمرين 14: اطبع قيمة myBlockVar خارج if .

if(true){
  const myBlockVar = true;
}

console.log(myBlockVar);

النتيجة هي: Uncaught ReferenceError: myBlockVar is not defined

نطاق الكتلة

نطاق الكتلة يقع بين القوسين المعقوفين

٤- const

العامل const متغيراتها ذات نطاق كتلة.


تدريبات إضافية

التمرين 15: أنشئ PI ثابتًا بالقيمة 3.14.

const PI = 3.14;

console.log(PI);

النتيجة هي: 3.14

التمرين 16: ارجع إلى التمرين 15؛ هل يمكنك إسناد 3 على PI إلى الثابت؟

const PI = 3.14;

PI = 3;

console.log(PI);

النتيجة هي: Uncaught TypeError: Assignment to constant variable.

التمرين 17: أنشئ دالة تتحقّق مما إذا كان حاصل ضرب الثابت e في عدد مُعطى أكبر من 1 أم لا. قيمة e هي 2.718.

function greaterThanE(num){
  const e = 2.718;
  return (e * num ) > 1;
}

console.log(greaterThanE(5));
console.log(greaterThanE(0.0006));

النتيجة كما يلي:

true
false

التمرين 18 ارجع إلى التمرين 17؛ هل يمكنك الوصول إلى e خارج greaterThanE ؟

function greaterThanE(num){
  const e = 2.718;
  return (e * num ) > 1;
}

console.log(e);

النتيجة هي: Uncaught ReferenceError: e is not defined

التمرين 19: صرّح عن secret ثابتًا داخل كتلة، وحاول الوصول إليه خارجها. قيمة secret هي "It is a secret, so how I am supposed to share with you ;)".

{
  const secret = "It is a secret, so how I am supposed to share with you ;)";
}

console.log(secret);

النتيجة هي: Uncaught ReferenceError: secret is not defined

التمرين 20: أعد تنفيذ التمرين 19، لكن استبدل const بـ var.

{
  var secret = "It is a secret, so how I am supposed to share with you ;)";
}

console.log(secret);

النتيجة هي: It is a secret, so how I am supposed to share with you ;)

التمرين 21: أنشئ دالة عادية تستقبل incomeوتتحقّق مما إذا كان أكبر من 1000، فتطبّق نسبة 0.16 ضريبةً عليه؛ وإلا فتطبّق 0.06 ضريبةً عليه. تلميح: نسب الضريبة ثوابت.

function calcTax(income){
  if(income > 1000){
    const tax = 0.16;
  }else{
    const tax = 0.06;
  }
  return tax * income;
}

console.log(calcTax(500));

النتيجة هي: Uncaught ReferenceError: tax is not defined

التمرين 22: أعد تنفيذ التمرين 21 للحصول على النتيجة الصحيحة.

function calcTax(income){
  if(income > 1000){
    const tax = 0.16;
    return tax * income;
  }else{
    const tax = 0.06;
    return tax * income;
  }
}

console.log(calcTax(500));

النتيجة هي: 30