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

٥.٦ الكلمة let

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

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

var num = 10;

console.log(num);

النتيجة هي: 10

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

let num = 10;

console.log(num);

النتيجة هي: 10

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

let num = 10;

num = 20;
console.log(num);

النتيجة هي: 20

التمرين 4: صرّح عن المتغير name باستخدام let . أسند "Ali" إليه.

let name;

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

النتيجة هي: Ali

التمرين 5: صرّح عن المتغير type باستخدام let . أسند true إليه.

let type;

type = true;
console.log(type);

النتيجة هي: true

١- let

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


التمرين 6: أعد التصريح عن المتغير myVar باستخدام var . أسند "hello" إليه.

var myVar = "Bye";

var myVar = "Hello";
console.log(myVar);

النتيجة هي: Hello

التمرين 7: أعد التصريح عن المتغير myVar بـ let . أسند "hello" إليه.

let myVar = "Bye";

let myVar = "Hello";
console.log(myVar);

النتيجة هي: Uncaught SyntaxError: Identifier 'myVar' has already been declared

التمرين 8: أعد التصريح عن المتغير secret بـ let . أسند "Top Secret" إليه.

let secret = "Not a secret";

let secret = "Top Secret";
console.log(secret);

النتيجة هي: Uncaught SyntaxError: Identifier 'secret' has already been declared

٢- let

المتغيرات المصرّح عنها باستخدام Let لا يمكن إعادة التصريح عنها في النطاق نفسه.


نطاق let

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

function myFunc(){
  var myVar = 5;
  return myVar;
}

console.log(myVar);

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

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

function myFunc(){
  let myVar = 5;
  return myVar;
}

console.log(myVar);

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

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

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

console.log(myVar);

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

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

{
  let myVar = "I am inside a block";
}

console.log(myVar);

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

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

if(true){
  var myBlockVar = true;
}

console.log(myBlockVar);

النتيجة هي: true

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

if(true){
  let myBlockVar = true;
}

console.log(myBlockVar);

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

٣- let

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


let والكائن window

التمرين 15: صرّح عن المتغير abc باستخدام var . اضبط قيمة abc على 1، واطبع window.abc في وحدة التحكم.

var abc;

abc = 1;
console.log(window.abc);

النتيجة هي: 1

التمرين 16: صرّح عن المتغير abc باستخدام let . اضبط قيمة abc على 1، واطبع window.abc في وحدة التحكم.

let abc;

abc = 1;
console.log(window.abc);

النتيجة هي: undefined

التمرين 17: صرّح عن المتغير greeting باستخدام var . اضبط قيمة greeting على "Hello everyone"، واطبع window.greeting في وحدة التحكم.

var greeting;

greeting = "Hello everyone";
console.log(window.greeting);

النتيجة هي: Hello everyone

التمرين 18: صرّح عن المتغير greeting باستخدام let . اضبط قيمة greeting على "Hello everyone"، واطبع window.greeting في وحدة التحكم.

let greeting;

greeting = "Hello everyone";
console.log(window.greeting);

النتيجة هي: undefined

٤- let

let لا تُنشئ خصائص على window عند التصريح بها في النطاق العام.


تهيئة let

التمرين 19: حاول الوصول إلى المتغير myVar قبل التصريح عنه.

console.log(myVar);

var myVar = 5;

النتيجة هي: undefined

التمرين 20: حاول الوصول إلى المتغير myVar قبل التصريح عنه.

console.log(myVar);

let myVar = 5;

النتيجة هي: Uncaught ReferenceError: Cannot access 'myVar' before initialization

٥- let

let تُهيّأ عند تنفيذ تصريحها. قبل ذلك تكون في المنطقة الميتة المؤقتة (TDZ)، فلا يمكن الوصول إليها.