Scope چییە؟

لە جاڤاسکریپتدا، Scope یان ژینگە دیاری دەکات کە گۆڕاوەکان (Variables) لە کوێ دەبینرێن و لە کوێ دەتوانین بەکاریان بهێنین. بە واتایەکی تر، Scope سنووری دەسەڵاتی گۆڕاوەکانە.

تێگەیشتن لەم چەمکە زۆر گرنگە بۆ ئەوەی لە کاتی نووسینی کۆدی ئاڵۆزدا تووشی هەڵە نەبیت و بە باشی کۆنترۆڵی زانیارییەکان بکەیت.

تێبینی: بە گشتی دوو جۆر Scope-مان هەیە: گشتی (Global) و ناوخۆیی (Local). هەر گۆڕاوێک لە شوێنێکی هەڵەدا بەکاربهێنیت، جاڤاسکریپت هەڵەی ReferenceError-ت پێ دەدات.

گۆڕاوی گشتی (Global Scope)

هەر گۆڕاوێک کە لە دەرەوەی هەموو فەنکشنێک یان بلۆکێک پێناسە بکرێت، پێی دەوترێت گۆڕاوی گشتی. ئەم گۆڕاوە لە هەموو شوێنێکی پرۆگرامەکەتدا دەستت پێی دەگات.

let siteName = "فێرکاری جاڤاسکریپت";

function showName() {
  console.log(siteName); // دەتوانێت بەکاری بهێنێت
}

showName();
console.log(siteName); // لە دەرەوەش دەبینرێت

لێرەدا گۆڕاوی siteName لە دەرەوەی فەنکشنەکە پێناسە کراوە، بۆیە لە ناو فەنکشنەکەشدا بە ئاسانی دەتوانین بیخوێنینەوە.

گۆڕاوی ناوخۆیی (Local Scope)

کاتێک گۆڕاوێک لە ناو فەنکشنێکدا پێناسە دەکەیت، ئەو گۆڕاوە ناوخۆییە. واتە تەنها لە ناو ئەو فەنکشنەدا دەبینرێت و لە دەرەوەی فەنکشنەکە هیچ بوونی نییە.

function myFunc() {
  let secret = "زانیاری نهێنی";
  console.log(secret);
}

myFunc();
// console.log(secret); // ئەمە هەڵە دەدات!

هەڵەی باو: زۆرێک لە فێرخوازان هەوڵ دەدەن گۆڕاوی ناوخۆیی لە دەرەوەی فەنکشن بەکاربهێنن. ئەگەر ئەمە بکەیت، کۆمپایلەر دەڵێت گۆڕاوەکە نەدۆزراوەتەوە (is not defined).

تایبەتمەندی تەمەنی گۆڕاوەکان

ئاگاداری: گۆڕاوی ناوخۆیی تەنها لەو کاتەدا دەژی کە فەنکشنەکە کار دەکات. کاتێک فەنکشنەکە تەواو بوو، گۆڕاوە ناوخۆییەکان لەناو دەچن و شوێن بۆ گۆڕاوی نوێ چۆڵ دەبێت.

جیاوازی نێوان let و var لە Scope

لە جاڤاسکریپتی مۆدێرندا، ئێمە زیاتر let و const بەکاردەهێنین. جیاوازی سەرەکییان لەگەڵ var ئەوەیە کە let و const تەنها لە ناو ئەو بلۆکەدا دەمێننەوە کە تێیدا پێناسە کراون (Block Scope)، بەڵام var ئەم سنوورەی نییە.

if (true) {
  let blockVar = "من تەنها لەم بلۆکەم";
  var oldVar = "من لە هەموو شوێنێکم";
}
console.log(oldVar); // کار دەکات
// console.log(blockVar); // هەڵە دەدات

پرسیار و راهێنان

بۆ ئەوەی دڵنیا بیت لە تێگەیشتنت، ئەم راهێنانە ئەنجام بدە:

  • فەنکشنێک دروست بکە بە ناوی calculate.
  • لە ناو فەنکشنەکەدا گۆڕاوێک دروست بکە بە ناوی result و نرخێکی تێ بکە.
  • هەوڵ بدە لە دەرەوەی فەنکشنەکە بە console.log ئەو گۆڕاوە چاپ بکەیت.
  • ببینە چی ڕوودەدات و بۆچی؟