نطاق جافا سكريبت
يحدد النطاق إمكانية الوصول (الرؤية) للمتغيرات.
تحتوي JavaScript على 3 أنواع من النطاق:
- نطاق الكتلة
- نطاق الوظيفة
- النطاق العالمي
نطاق الكتلة
قبل ES6 (2015) ، كان لـ JavaScript النطاق العالمي والنطاق الوظيفي فقط .
قدم ES6 كلمتين أساسيتين مهمتين لجافا سكريبت: let
و const
.
توفر هاتان الكلمتان الأساسيتان Block Scope في JavaScript.
المتغيرات التي تم تعريفها داخل كتلة {} لا يمكن الوصول إليها من خارج الكتلة:
مثال
{
let x = 2;
}
// x can NOT be used here
المتغيرات المعلنة var
بالكلمة الأساسية لا يمكن أن يكون لها نطاق كتلة.
يمكن الوصول إلى المتغيرات المعلنة داخل كتلة {} من خارج الكتلة.
مثال
{
var x = 2;
}
// x CAN be used here
النطاق المحلي
المتغيرات المعلنة ضمن دالة JavaScript ، تصبح محلية للوظيفة.
مثال
// code here can NOT use carName
function myFunction() {
let carName = "Volvo";
// code here CAN use carName
}
// code here can NOT use carName
المتغيرات المحلية لها نطاق الوظيفة :
لا يمكن الوصول إليها إلا من داخل الوظيفة.
نظرًا لأن المتغيرات المحلية يتم التعرف عليها داخل وظائفها فقط ، يمكن استخدام المتغيرات التي تحمل الاسم نفسه في وظائف مختلفة.
يتم إنشاء المتغيرات المحلية عند بدء تشغيل الوظيفة ، ويتم حذفها عند اكتمال الوظيفة.
نطاق الوظيفة
جافا سكريبت لها نطاق وظيفي: كل وظيفة تنشئ نطاقًا جديدًا.
المتغيرات المعرفة داخل دالة لا يمكن الوصول إليها (مرئية) من خارج الوظيفة.
يتم الإعلان عن المتغيرات مع var
، let
وتكون const
متشابهة تمامًا عند الإعلان عنها داخل دالة.
لديهم جميعًا نطاق الوظيفة :
function myFunction() {
var carName = "Volvo";
// Function Scope
}
function myFunction() {
let carName = "Volvo"; //
Function Scope
}
function myFunction() {
const carName = "Volvo"; //
Function Scope
}
متغيرات جافا سكريبت العامة
المتغير الذي تم الإعلان عنه خارج الدالة ، يصبح GLOBAL .
مثال
let carName = "Volvo";
// code here can use carName
function myFunction() {
// code here can also use carName
}
المتغير العام له نطاق عالمي :
يمكن لجميع البرامج النصية والوظائف الموجودة على صفحة الويب الوصول إليها.
النطاق العالمي
المتغيرات المعلنة عالميًا (خارج أي دالة) لها نطاق عالمي .
يمكن الوصول إلى المتغيرات العامة من أي مكان في برنامج JavaScript.
يتم الإعلان عن المتغيرات مع var
، let
وتكون const
متشابهة تمامًا عند الإعلان عنها خارج الكتلة.
لديهم جميعًا نطاق عالمي :
var x = 2;
// Global scope
let x = 2; //
Global scope
const x = 2; //
Global scope
متغيرات جافا سكريبت
في JavaScript ، تعتبر الكائنات والوظائف أيضًا متغيرات.
يحدد النطاق إمكانية الوصول إلى المتغيرات والكائنات والوظائف من أجزاء مختلفة من الكود.
تلقائيا العالمية
إذا قمت بتعيين قيمة إلى متغير لم يتم التصريح عنه ، فسيصبح تلقائيًا متغيرًا عالميًا .
سيعلن مثال الكود هذا عن متغير عام carName
، حتى لو تم تعيين القيمة داخل دالة.
مثال
myFunction();
// code here can use carName
function myFunction() {
carName = "Volvo";
}
الوضع الصارم
تدعم جميع المتصفحات الحديثة تشغيل JavaScript في "الوضع الصارم".
سوف تتعلم المزيد حول كيفية استخدام الوضع المتشدد في فصل لاحق من هذا البرنامج التعليمي.
في "الوضع الصارم" ، لا تكون المتغيرات غير المعلنة عامة تلقائيًا.
المتغيرات العالمية في HTML
مع JavaScript ، النطاق العام هو بيئة JavaScript.
في HTML ، النطاق العام هو كائن النافذة.
المتغيرات العامة المعرفة var
بالكلمة الأساسية تنتمي إلى كائن النافذة:
مثال
var carName = "Volvo";
// code here
can use window.carName
المتغيرات العامة المعرفة let
بالكلمة الأساسية لا تنتمي إلى كائن النافذة:
مثال
let carName = "Volvo";
// code here can not use window.carName
تحذير
لا تنشئ متغيرات عامة إلا إذا كنت تنوي ذلك.
يمكن للمتغيرات العامة (أو الوظائف) أن تحل محل متغيرات النافذة (أو الوظائف).
يمكن لأي دالة ، بما في ذلك كائن النافذة ، الكتابة فوق المتغيرات والوظائف العامة.
عمر متغيرات جافا سكريبت
يبدأ عمر متغير JavaScript عندما يتم الإعلان عنه.
يتم حذف متغيرات الوظيفة (المحلية) عند اكتمال الوظيفة.
في متصفح الويب ، يتم حذف المتغيرات العامة عند إغلاق نافذة المتصفح (أو علامة التبويب).
الحجج الوظيفية
تعمل وسيطات الوظيفة (المعلمات) كمتغيرات محلية داخل الوظائف.