٥.٥ الكلمة 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