٥.٧ التصريح عن المتغيرات¶
إعادة التصريح¶
التمرين 1: صرّح عن المتغيرات a, b، و c باستخدام الكلمات var, let, constعلى الترتيب، وأسند إليها القيم 1, 2، و 3على الترتيب.
var a = 1;
let b = 2;
const c = 3;
console.log(a, b, c);
النتيجة هي: 1 2 3
التمرين 2: ارجع إلى التمرين 1؛ أعد التصريح عن المتغيرات a، و b.
var a = 1;
let b = 2;
const c = 3;
var a;
let b;
console.log(a, b);
النتيجة هي: Uncaught SyntaxError: Identifier 'b' has already been declared
التمرين 3: ارجع إلى التمرين 1؛ أعد التصريح عن المتغيرات a، و c.
var a = 1;
let b = 2;
const c = 3;
var a;
const c;
console.log(a, c);
النتيجة هي: Uncaught SyntaxError: Identifier 'c' has already been declared
الإسناد¶
التمرين 4: أسند 10 على myVar1.
var myVar1;
myVar1 = 10;
console.log(myVar1);
النتيجة هي: 10
التمرين 5: أسند 20 على myVar2.
let myVar2;
myVar2 = 20;
console.log(myVar2);
النتيجة هي: 20
التمرين 6: أسند 30 على myVar3.
const myVar3;
myVar3 = 30;
console.log(myVar3);
النتيجة هي: Uncaught SyntaxError: Missing initializer in const declaration
إعادة الإسناد¶
التمرين 7: أعد إسناد 100 على myVar1.
var myVar1 = 10;
myVar1 = 100;
console.log(myVar1);
النتيجة هي: 100
التمرين 8: أعد إسناد 200 على myVar2.
let myVar2 = 20;
myVar2 = 200;
console.log(myVar2);
النتيجة هي: 200
التمرين 9: أعد إسناد 300 على myVar3.
const myVar3 = 30;
myVar3 = 300;
console.log(myVar3);
النتيجة هي: Uncaught TypeError: Assignment to constant variable.
رفع التصريحات (Hoisting)¶
التمرين 10: حاول الوصول إلى المتغير myVar قبل التصريح عنه.
console.log(myVar);
var myVar = "Hello";
النتيجة هي: undefined
التمرين 11: حاول الوصول إلى المتغير myVar قبل التصريح عنه.
console.log(myVar);
let myVar = "Hello";
النتيجة هي: Uncaught ReferenceError: Cannot access 'myVar' before initialization
التمرين 12: حاول الوصول إلى المتغير myVar قبل التصريح عنه.
console.log(myVar);
const myVar = "Hello";
النتيجة هي: Uncaught ReferenceError: Cannot access 'myVar' before initialization
window¶
التمرين 13: اطبع قيمة window.a في وحدة التحكم.
var a = 1;
console.log(window.a);
النتيجة هي: 1
التمرين 14: اطبع قيمة window.a في وحدة التحكم.
let a = 1;
console.log(window.a);
النتيجة هي: undefined
التمرين 15: اطبع قيمة window.a في وحدة التحكم.
const a = 1;
console.log(window.a);
النتيجة هي: undefined
ملخص¶
| وجه المقارنة | var | let | const |
|---|---|---|---|
| التصريح | var a = 1; //a = 1 | let a = 1; // a = 1 | const a = 1; //a = 1 |
| إعادة التصريح | var a = 1; var a; //a = 1 | let a = 1; let a; //Identifier 'a' has already been declared | const a = 1; const a; //Identifier 'a' has already been declared |
| الإسناد | var a; a = 1; // a = 1 | let a; a = 1; // a = 1 | const a; a = 1; //Missing initializer in const declaration |
| إعادة الإسناد | var a = 1; a = 2; // a = 2 | let a = 1; a = 2; // a = 2 | const a = 1; a = 2; //Assignment to constant variable |
| رفع التصريحات (Hoisting) | console.log(a); // undefined var a = 1; | console.log(a); // Cannot access 'myVar' before initialization let a = 1; | console.log(a); // Cannot access 'myVar' before initialization const a = 1; |
| هل تصبح خاصية في window؟ | var a = 1; console.log(window.a); // 1 | let a = 1; console.log(window.a); // undefined | const a = 1; console.log(window.a);// undefined |
| النطاق | ذو نطاق دالة | ذو نطاق كتلة | ذو نطاق كتلة |