DeveloperBreeze

في 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، وقدمنا أفضل الممارسات لاستخدامها في الكود الخاص بك.

Continue Reading

Discover more amazing content handpicked just for you

Tutorial
javascript

Variables and Constants

  • Variables are accessible within the entire function they are declared in.
  • Example:
     function test() {
       var y = 20;
       console.log(y); // 20
     }
     console.log(y); // Error: y is not defined

Dec 10, 2024
Read More
Tutorial
javascript

History and Evolution

  • Created by Brendan Eich in just 10 days while working at Netscape.
  • Originally named Mocha, then renamed LiveScript, and finally JavaScript to ride the popularity wave of Java.
  • JavaScript was standardized under the name ECMAScript by ECMA International.
  • The first edition of ECMAScript (ES1) laid the foundation for modern JavaScript.

Dec 10, 2024
Read More
Article
javascript

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

These Node.js tips will help you write more robust, secure, and efficient Node.js applications and improve your development workflow.

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>

    <p id="text">هذا نص يمكن إخفاؤه أو إظهاره.</p>
    <button id="toggleText">تبديل العرض</button>

    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $('#toggleText').click(function() {
            $('#text').toggle();
        });
    </script>
</body>
</html>
  • عند النقر على الزر، سيتم إخفاء النص إذا كان ظاهرًا، أو إظهاره إذا كان مخفيًا باستخدام .toggle().

Sep 26, 2024
Read More
Tutorial
javascript

كيفية بناء تطبيقات تفاعلية باستخدام JavaScript و HTML و CSS

  • قمنا بإضافة الأنماط لتنسيق النموذج والزر، بالإضافة إلى تحسين التصميم ليكون مركزيًا في الصفحة.

الآن، حان وقت إضافة التفاعلية باستخدام JavaScript. سنقوم بكتابة كود يجعل التطبيق يتفاعل مع المستخدم عند الضغط على الزر.

Sep 26, 2024
Read More
Tutorial
javascript

البرمجة الكائنية (OOP) في JavaScript: المفاهيم الأساسية والتطبيقات

الكائن هو نسخة من الفئة (class). في المثال السابق، myCar هو كائن تم إنشاؤه من الفئة Car. يحتوي على الخصائص (brand, model, year) ويمكنه تنفيذ السلوكيات (startEngine, stopEngine).

console.log(myCar.brand);  // Toyota
console.log(myCar.model);  // Corolla
console.log(myCar.year);   // 2020

Sep 26, 2024
Read More
Tutorial
javascript

Understanding JavaScript Classes

The extends keyword is used to create a subclass (child class) that inherits from another class (parent class).

class Animal {
  constructor(type, name) {
    this.type = type;
    this.name = name;
  }

  speak() {
    console.log(`${this.name} makes a noise.`);
  }
}

class Dog extends Animal {
  constructor(name, breed) {
    super('Dog', name);
    this.breed = breed;
  }

  speak() {
    console.log(`${this.name} barks.`);
  }
}

const dog = new Dog('Buddy', 'Golden Retriever');
dog.speak(); // Output: Buddy barks.

Sep 02, 2024
Read More
Tutorial
javascript

Understanding ES6: A Modern JavaScript Tutorial

ECMAScript 6 (ES6), also known as ECMAScript 2015, introduced a plethora of new features to JavaScript that have since become essential for modern web development. These features make JavaScript more powerful, easier to write, and more readable. This tutorial will guide you through the most important features of ES6, helping you understand how they work and how you can use them to improve your JavaScript code.

Before ES6, JavaScript only had function-scoped variables using the `var` keyword. ES6 introduced `let` and `const`, which provide block scope.

Aug 30, 2024
Read More
Code
javascript json

JavaScript Code Snippet: Fetch and Display Data from an API

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Fetch API Example</title>
</head>
<body>
    <h1>User Information</h1>
    <ul id="user-list"></ul>

    <script>
        async function fetchUserData() {
            try {
                const response = await fetch('https://jsonplaceholder.typicode.com/users');
                if (!response.ok) {
                    throw new Error('Network response was not ok');
                }
                const users = await response.json();
                displayUsers(users);
            } catch (error) {
                console.error('Fetch error:', error);
            }
        }

        function displayUsers(users) {
            const userList = document.getElementById('user-list');
            users.forEach(user => {
                const listItem = document.createElement('li');
                listItem.textContent = `${user.name} - ${user.email}`;
                userList.appendChild(listItem);
            });
        }

        fetchUserData();
    </script>
</body>
</html>

Aug 04, 2024
Read More

Discussion 0

Please sign in to join the discussion.

No comments yet. Start the discussion!