DeveloperBreeze

الفرق بين let و const و var في JavaScript

في JavaScript، توجد ثلاثة طرق رئيسية لإعلان المتغيرات: var و let و const. كل طريقة لها استخداماتها وقواعدها الخاصة. في هذا الدليل، سنتناول الفرق بينها بالتفصيل.


1. المتغيرات باستخدام var

الوصف:

  • var هي الطريقة القديمة لتعريف المتغيرات في JavaScript وكانت تُستخدم قبل ECMAScript 6 (ES6).
  • نطاق المتغير: المتغيرات المُعلنة باستخدام var تكون ذات نطاق وظيفي أو عام (Global/Function Scope).
  • إعادة التعريف: يمكنك إعادة تعريف المتغيرات المُعلنة باستخدام var دون حدوث أخطاء.

مثال:

var x = 5;
if (true) {
    var x = 10; // إعادة تعريف x
    console.log(x); // 10
}
console.log(x); // 10 (الـ var تم تعريفه بالنطاق العام)

خصائص var:

  • نطاق الوظيفة: المتغيرات التي يتم تعريفها باستخدام var تكون مرتبطة بالوظيفة إذا كانت داخل دالة، أو تصبح عامة إذا كانت خارج أي دالة.
  • رفع المتغير (Hoisting): المتغيرات المُعلنة باستخدام var يتم رفعها إلى أعلى النطاق الوظيفي أو العام قبل تنفيذ الكود. أي يمكن استخدام المتغير قبل أن يتم إعلانه، لكنه سيعطى قيمة undefined.

مثال على رفع المتغير:

console.log(y); // undefined (تم رفع y لكن لم يُعطى قيمة بعد)
var y = 7;

2. المتغيرات باستخدام let

الوصف:

  • let تم تقديمها في ES6 وهي طريقة أفضل لتعريف المتغيرات مقارنةً بـ var.
  • نطاق المتغير: المتغيرات المُعلنة باستخدام let تكون ذات نطاق كتلة (Block Scope).
  • إعادة التعريف: لا يمكن إعادة تعريف نفس المتغير باستخدام let داخل نفس النطاق.

مثال:

let a = 5;
if (true) {
    let a = 10; // تعريف جديد داخل كتلة if
    console.log(a); // 10
}
console.log(a); // 5 (القيمة خارج الكتلة لم تتأثر)

خصائص let:

  • نطاق الكتلة: المتغيرات التي يتم تعريفها باستخدام let تكون محصورة داخل الكتلة التي تم تعريفها فيها (مثل داخل if أو for).
  • رفع المتغير: يتم رفع المتغيرات المُعلنة باستخدام let، لكن لا يمكن الوصول إليها قبل الإعلان عنها بشكل صريح؛ أي أن استخدامها قبل الإعلان يؤدي إلى خطأ.

مثال على خطأ الرفع:

console.log(b); // ReferenceError: Cannot access 'b' before initialization
let b = 7;

3. المتغيرات باستخدام const

الوصف:

  • const تم تقديمها في ES6 وتستخدم لتعريف المتغيرات التي لا تتغير قيمتها بعد الإعلان عنها.
  • نطاق المتغير: مثل let، المتغيرات المُعلنة باستخدام const تكون ذات نطاق كتلة.
  • إعادة التعيين: لا يمكن إعادة تعيين أو تعديل قيمة المتغير المُعرّف باستخدام const.

مثال:

const PI = 3.14159;
console.log(PI); // 3.14159
PI = 3.14; // TypeError: Assignment to constant variable.

خصائص const:

  • نطاق الكتلة: المتغيرات المُعلنة باستخدام const تكون محصورة داخل الكتلة التي تم تعريفها فيها.
  • الثبات: بعد تعيين قيمة للمتغير المُعلَن باستخدام const، لا يمكن تغيير هذه القيمة.
  • المتغيرات المعقدة: بالنسبة للمتغيرات التي تحتوي على كائنات أو مصفوفات، يمكنك تعديل خصائص الكائن أو عناصر المصفوفة، ولكن لا يمكن إعادة تعيين الكائن أو المصفوفة نفسها.

مثال على كائنات ومصفوفات مع const:

const myArray = [1, 2, 3];
myArray.push(4); // يمكن تعديل المصفوفة
console.log(myArray); // [1, 2, 3, 4]

const myObject = { name: "John" };
myObject.age = 30; // يمكن تعديل خصائص الكائن
console.log(myObject); // { name: "John", age: 30 }

4. مقارنة عامة بين var و let و const

<table border="1" cellpadding="10" cellspacing="0">
  <thead>
    <tr>
      <th>الخاصية</th>
      <th><code>var
      let
      const
    
  
  
    
      نطاق المتغير
      نطاق وظيفي أو عام
      نطاق الكتلة
      نطاق الكتلة
    
    
      إعادة التعيين
      يمكن إعادة تعيينه
      يمكن إعادة تعيينه
      لا يمكن إعادة تعيينه
    
    
      إعادة التعريف
      يمكن إعادة تعريفه
      لا يمكن إعادة تعريفه
      لا يمكن إعادة تعريفه
    
    
      رفع المتغير
      نعم، مع قيمة undefined
      نعم، لكن لا يمكن الوصول إليه قبل التعيين
      نعم، لكن لا يمكن الوصول إليه قبل التعيين
    
    
      ثبات القيمة
      لا
      لا
      نعم
    
  


5. متى تستخدم كل منها؟

  • استخدم const عندما تكون متأكدًا أن القيمة لن تتغير بعد التعيين.
  • استخدم let عندما تتوقع أن تتغير قيمة المتغير، خاصة داخل نطاق كتلة (مثل الحلقات أو الشروط).
  • تجنب استخدام var إذا كان ذلك ممكنًا؛ فهو قد يسبب أخطاء بسبب نطاقه العام وسلوكه مع الرفع.

الخلاصة:

في JavaScript، var، let، و const كل منها لها خصائصها المميزة. var يستخدم بشكل أقل الآن بسبب مشاكله المتعلقة بالنطاق والرفع، بينما let و const يفضل استخدامهما في معظم الحالات. const يُستخدم للثوابت، وlet يُستخدم عندما تتغير قيمة المتغير.

أمثلة عملية:

// استخدام let و const مع الحلقات
for (let i = 0; i < 5; i++) {
    console.log(i); // 0, 1, 2, 3, 4
}

const name = "John";
if (true) {
    let name = "Doe";
    console.log(name); // Doe
}
console.log(name); // John

بهذا الدليل الشامل، تعرفنا على الفرق بين let و const و var في JavaScript، وقدمنا أفضل الممارسات لاستخدامها في الكود الخاص بك.

Related Posts

More content you might like

Tutorial
javascript

Variables and Constants

     const API_KEY = "12345";
     // API_KEY = "67890"; // Error: Assignment to constant variable
  • Variables are accessible only within the block they are declared in.
  • Example:

Dec 10, 2024
Read More
Tutorial
javascript

History and Evolution

  • JavaScript was standardized under the name ECMAScript by ECMA International.
  • The first edition of ECMAScript (ES1) laid the foundation for modern JavaScript.
  • Competing browsers (Netscape, Internet Explorer) implemented JavaScript differently, leading to compatibility issues.
  • The advent of libraries like jQuery (2006) helped developers write cross-browser code more easily.

Dec 10, 2024
Read More
Article
javascript

20 Useful Node.js tips to improve your Node.js development skills:

No preview available for this content.

Oct 24, 2024
Read More
Tutorial
javascript

مكتبة jQuery: استخدام JavaScript بسهولة وفعالية

<!DOCTYPE html>
<html lang="ar">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>مثال على jQuery</title>
</head>
<body>

    <h1>مرحبًا بك!</h1>
    <button id="myButton">انقر هنا</button>

    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        // تحديد الزر والتفاعل معه
        $('#myButton').click(function() {
            alert('تم النقر على الزر!');
        });
    </script>
</body>
</html>

شرح الكود:

Sep 26, 2024
Read More

Discussion 0

Please sign in to join the discussion.

No comments yet. Be the first to share your thoughts!