فهم الفرق بين "let" و"var" في JavaScript

JavaScript

استيعاب الإعلانات المتغيرة في جافا سكريبت

في عالم جافا سكريبت، يعد فهم الفرق بين Let وvar أمرًا بالغ الأهمية لكتابة تعليمات برمجية نظيفة وفعالة. أضافت عبارة Let، التي تم تقديمها في ECMAScript 6، بُعدًا جديدًا لتعريف المتغير، وغالبًا ما يتم وصفها بأنها توفر المزيد من التحكم في نطاق المتغير.

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

يأمر وصف
var يعلن عن متغير، ويهيئه اختياريًا إلى قيمة. إنه ذو نطاق وظيفي أو عالمي النطاق ويمكن إعادة الإعلان عنه وتحديثه.
let يعلن عن متغير محلي محدد النطاق، ويقوم بتهيئته اختياريًا إلى قيمة. ولا يمكن إعادة الإعلان عنها ضمن نفس النطاق.
const يعلن عن ثابت محدد النطاق للقراءة فقط. يجب أن تتم تهيئته في وقت الإعلان ولا يمكن إعادة تعيينه.
writeHead يضبط رمز الحالة والرؤوس لاستجابة HTTP في Node.js.
createServer إنشاء خادم HTTP في Node.js، والذي يمكنه الاستماع للطلبات والرد عليها.
listen يقوم بإعداد الخادم لبدء الاستماع للاتصالات الواردة على منفذ محدد.
console.log طباعة الرسائل إلى وحدة التحكم، مفيدة لأغراض التصحيح.

كيف يختلف "let" و"var" في الممارسة العملية

يوضح مثال البرنامج النصي للواجهة الأمامية الاختلافات الرئيسية بين و . في ال الدالة، المتغير var x يتم الإعلان عنه داخل كتلة if ويعيد تعيين نفس المتغير ضمن نطاق الوظيفة بأكمله. يؤدي هذا إلى إخراج سجلات وحدة التحكم 2، مما يوضح كيفية القيام بذلك لا يحترم نطاق الكتلة. في المقابل، تعلن الوظيفة داخل وخارج كتلة if. ال let يعد الإعلان داخل الكتلة متغيرًا مختلفًا، لذا فإن سجل وحدة التحكم الأول يخرج 2، ويخرج سجل وحدة التحكم الثاني 1، مع احترام نطاق الكتلة.

يقوم مثال Node.js للواجهة الخلفية بإعداد خادم HTTP بسيط لتوضيح هذه الاختلافات بشكل أكبر. استخدام ضمن كتلة if، نرى ذلك يكتب فوق الخارجي متغير بسبب نطاق الوظيفة. ال let message يظل داخل الكتلة محليًا لتلك الكتلة، ويعرض نطاق الكتلة عن طريق إخراج رسائل مختلفة لكل كتلة. استخدام و تقوم الأوامر بإنشاء الخادم، الذي يكتب الردود على العميل، موضحًا التطبيقات العملية لها و let في سيناريوهات العالم الحقيقي.

التمييز بين "let" و"var" في JavaScript

مثال لجافا سكريبت للواجهة الأمامية

// Example demonstrating the difference between 'var' and 'let'
function varTest() {
    var x = 1;
    if (true) {
        var x = 2;  // same variable
        console.log(x);  // 2
    }
    console.log(x);  // 2
}

function letTest() {
    let y = 1;
    if (true) {
        let y = 2;  // different variable
        console.log(y);  // 2
    }
    console.log(y);  // 1
}

varTest();
letTest();

فهم النطاق باستخدام "let" و"var"

مثال على Node.js للواجهة الخلفية

// Backend example using Node.js to demonstrate 'let' and 'var'
const http = require('http');

http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    var count = 10;
    let message = "The count is: ";

    if (true) {
        var count = 20;  // 'count' is hoisted and overwritten
        let message = "New count is: ";  // block-scoped
        res.write(message + count);  // New count is: 20
    }
    res.write(message + count);  // The count is: 20
    res.end();
}).listen(8080);

console.log('Server running at http://127.0.0.1:8080/');

الغوص بشكل أعمق في النطاق والرفع

جانب رئيسي آخر يجب مراعاته عند المقارنة و يتم الرفع. الرفع هو سلوك JavaScript لنقل الإعلانات إلى أعلى النطاق الحالي. مع ، يتم رفع المتغيرات وتهيئتها باستخدام undefinedمما قد يؤدي إلى نتائج غير متوقعة إذا تم استخدام المتغير قبل الإعلان عنه. في المقابل، يتم رفعه أيضًا، لكن لم تتم تهيئته. وهذا يعني الوصول إلى المتغير قبل إعلانه سوف يؤدي إلى أ .

بالإضافة إلى ذلك، يساعد على منع مشاكل الإغلاق في الحلقات. عند الاستخدام في الحلقة، تشير جميع التكرارات إلى نفس المتغير، مما قد يؤدي إلى حدوث أخطاء. لكن، ينشئ رابطًا جديدًا لكل تكرار، مما يضمن أن كل تكرار حلقة له نطاقه الخاص. هذا السلوك يجعل let خيار أكثر أمانًا ويمكن التنبؤ به للإعلان عن المتغيرات داخل الحلقات.

  1. ما هو الرفع في جافا سكريبت؟
  2. الرفع هو السلوك الافتراضي لجافا سكريبت لنقل الإعلانات إلى أعلى النطاق الحالي. يتم رفع الإعلانات وتهيئتها باستخدام ، بينما يتم رفع الإعلانات ولكن لا تتم تهيئتها.
  3. ماذا يحدث إذا كنت تستخدم أ المتغير قبل إعلانه؟
  4. الوصول إلى أ المتغير قبل أن يؤدي إعلانه إلى a .
  5. يستطيع و يتم إعادة إعلانها في نفس النطاق؟
  6. لا، لا يمكن إعادة الإعلان عنها في نفس النطاق، في حين يمكن إعادة الإعلان عنها في نفس النطاق.
  7. لماذا الأفضل في الحلقات؟
  8. ينشئ رابطًا جديدًا لكل تكرار للحلقة، مما يضمن أن كل تكرار للحلقة له نطاقه الخاص. وهذا يمنع الأخطاء الشائعة المرتبطة بعمليات الإغلاق.
  9. يفعل احترام نطاق الكتلة؟
  10. لا، لا يحترم نطاق الكتلة؛ إنه ذو نطاق وظيفي أو ذو نطاق عالمي.
  11. ما هي المنطقة الميتة المؤقتة؟
  12. المنطقة الميتة المؤقتة هي الوقت بين دخول النطاق والإعلان الفعلي للمتغير، والذي يتم خلاله الوصول إلى ملف المتغير سوف يرمي .
  13. يستطيع يمكن استخدامها بالمثل ؟
  14. نعم، هو نطاق الكتلة مثل ، ولكن يتم استخدامه للإعلان عن المتغيرات التي لا ينبغي إعادة تعيينها.
  15. عندما يجب يمكن استخدامها أكثر ؟
  16. يجب أن تستخدم أكثر عندما تحتاج إلى نطاق الكتلة ولتجنب المشكلات المتعلقة بالرفع والإغلاق المتغير.

الأفكار النهائية حول الإعلانات المتغيرة

وفي الختام مقدمة في ECMAScript 6، زود المطورين بأداة أكثر قوة لإعلان المتغيرات في JavaScript. فهم الاختلافات بين و يعد ضروريًا لكتابة تعليمات برمجية أنظف وأكثر قابلية للصيانة. بينما var قد يظل مفيدًا في مواقف معينة، يوفر تحكمًا أفضل في النطاق والرفع، مما يقلل من احتمالية حدوث الأخطاء.

عن طريق الاختيار زيادة في السيناريوهات المناسبة، يمكن للمطورين الاستفادة من تحديد نطاق الكتلة وتجنب المخاطر الشائعة المرتبطة بإعلان المتغير ورفعه. تعتبر هذه المعرفة أساسية لأي شخص يتطلع إلى إتقان تطوير JavaScript الحديث.