اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

الكلمة let يتعرف عليها مفسر اللغة على المستوى المحلي للدالة او ال block اي انه إذا تم تعريف متغيّر let داخل دالة فبمجرد خروج المفسر من الدالة لن تستطيع الوصول له الكلمة var تُعرف متغيّر على المستوى العام globally اي ان المتغيّر يعمل  على مستوى الملف كامل , اُنظر لأسئلة سابقة مشابهة لسؤالك 

اقرأ ايضاً عن var , let

  • 0
نشر

مرحبا أخي .

المتغيرات من نوع let و var متشابهان ولكن طريقة العمل هي المختلفه.

حيث ان let تم تعريفها فى  ES6 (2015).

والفروق بينهم كالتالي .

1- إعادة التعريف .

إذا قمت بإعادة تعريف المتغير من نوع let وسوف يقوم الكود بإظهار خطأ حيث لا يمكن تعريف المتغير فى المجال .

var somthing = "somthing";
var somthing = "somthing2"; // هنا سوف يتم استبدال قيمة المتغير


let somthing = "somthing"; 
let somthing = "somthing2"; // هنا سوف يعطيك الكود خطأ باه لايمكن إعادة تعريف المتغير

2- الرفع او Hoisting.

ان لغة جافا سكريبت تتميز بخاصية الرفع دوانا عن معظم لغات البرمجة .

تعريف الخاصية هو انه قبل ان يتم بدأ الكود فإن لغة الجافاسكريبت تقوم باعريف جميع المتغيرات عدا المتغيرات من نوع let  والدوال فى بداية الكود وليس فى مكان كتابة الكود .


console.log(somthing); // undefined هنا سوف يتم طباعة

// أى اكواد أخرى


var somthing = "somthing";


console.log(somthing); // somthing هنا سوف يتم طباعة ما بداخل المتغير

 

console.log(somthing); // ReferenceError هنا سوف يتم طباعة حيث لايمكنك استخادم المتغير من نوع let قبل تعريفه

// أى اكواد أخرى


var let = "somthing";


console.log(somthing); // somthing هنا سوف يتم طباعة ما بداخل المتغير

 

3- المجال .

حيث ان المتغيرات من نوع let تنتهى بمجرد انتهاء المجال الخاص بها ولا يمكن استخدامها خارج مجالها بعكس المتغيرات من نوع var

  var somthing = "somthing";
  let somthing2 = "somthing2";

  console.log(somthing, somthing2); // somthing somthing2 هنا سوف يتم طباعة المتغيران لانهم فى نفس المجال الخاص بهم

  {
    var somthing3 = "somthing3"
    let somthing4 = "somthing4";
    console.log(somthing3, somthing4); // somthing3 somthing4 هنا ايضا سوف يتم طباعة المتغيرات لانهم فى نفس المجال الخاص يهم ولكن نلاحظ ان المتغير من نوع let سوف يتم تدميره بمجرد انتهاء مجاله
  }

  console.log(somthing3); // somthing3   هنا سوف يتم طباعةالمتغير من نوع let
  console.log(somthing4); // ReferenceError   هنا سوف يظهر خطأ لان المتغير من نوع let قد تم تدميره بمجرد الانتهاء من المجال الخاص به

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...