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

٥.٧ التصريح عن المتغيرات

إعادة التصريح

التمرين 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
النطاق ذو نطاق دالة ذو نطاق كتلة ذو نطاق كتلة