في بعض لغات البرمجة التي تشبه C ، يكون لكل قطعة من الكود في أقواس Curly نطاقها الخاص ، والمتغيرات غير مرئية خارج قطاع الكود الذي يعلن عنها. ندعو نطاق الكتلة ، وليس هناك نطاق كتلة في JavaScript. بدلاً من ذلك ، يستخدم JavaScript نطاق الوظيفة: يتم تعريف المتغيرات في جسم الوظيفة الذي يعلن ذلك وأي هيكل وظيفي متداخل في جسم الوظيفة. في الكود التالي ، يتم تعريف I و J و K المحددة في مواقع مختلفة في نفس النطاق.
نسخة الكود كما يلي:
نص الوظيفة (س)
{
var i = 0 ؛
تنبيه (typeof o) ؛
إذا (typeof o == "سلسلة")
{
var J = 0 ؛
لـ (var k = 0 ؛ k <10 ؛ k ++)
{
تنبيه (ك) ؛ // الإخراج 0-9
}
تنبيه (ك) ؛ // الإخراج 10
}
تنبيه (J) ؛ // الإخراج 0
}
نطاق وظيفة JavaScript يعني أن جميع المتغيرات المعلنة داخل وظيفة ما هي دائمًا مرئية في جسم الوظيفة. ومن المثير للاهتمام ، هذا يعني أن المتغيرات متوفرة حتى قبل إعلانها. تسمى هذه الميزة من JavaScript بشكل غير رسمي ، أي أن جميع المتغيرات المعلنة في هيئة وظيفة JavaScript (لا توجد مهمة متورطة) هي "متقدمة" إلى الجزء العلوي من جسم الوظيفة. انظر إلى الكود التالي
نسخة الكود كما يلي:
var global = "globas" ؛
وظيفة Globals ()
{
تنبيه (عالمي) ؛ // غير محدد
var Global = "Hello Qdao" ؛
ALERT (Global) ؛ // Hello QDAO
}
نظرًا لطبيعة نطاق الوظيفة ، يتم تعريف المتغيرات المحلية دائمًا خلال جسم الوظيفة ، مما يعني أن المتغيرات داخل بوالة جسم تغطية المتغيرات العالمية بنفس الاسم. على الرغم من ذلك ، سيتم تعيين المتغيرات المحلية حقًا عندما ينفذ البرنامج عبارة VAR. لذلك ، فإن العملية أعلاه تعادل: إعلان المتغيرات في الوظيفة "تقدم" إلى أعلى جسم الوظيفة ، وترك تهيئة متغيرات الزميل في الموضع الأصلي:
نسخة الكود كما يلي:
var global = "globas" ؛
وظيفة Globals ()
{
فار جلوبال
تنبيه (عالمي) ؛ // غير محدد
Global = "Hello Qdao" ؛
ALERT (Global) ؛ // Hello QDAO
}