جاوا اسکریپت به زبان ساده - جلسه نوزدهم: کامنت و مفاهیم بلاک و Scope

پنج‌شنبه ۳ خرداد ۱۳۹۷ - ۱۹:۰۰
مطالعه 5 دقیقه
در این جلسه چند موضوع بسیار ساده ولی مهم را بررسی می‌کنیم؛ قرار دادن کامنت و مفهوم بلاک در کد و اسکوپ در جاوا اسکریپت از جمله این مفاهیم هستند.
تبلیغات

کامنت به تکه‌ای از کد گفته می‌شود که توسط مرورگر اجرا نمی‌شود. از کامنت برای قراردادن توضیحات، نکات یا هر چیزی که بعدا ممکن است بدان نیاز پیدا کنید استفاده می‌شود. دقت کنید که کامنت‌گذاری نکته بسیار مهمی است و باعث شفاف و خواناتر شدن کدها می‌شود. نکته مهم دیگر کامنت‌ها این است که می‌توانید با کمک آن‌ها تکه‌ای از کد که قصد اجرای آن را ندارید نیز کامنت کنید. بدین ترتیب آن تکه کد خوانده و اجرا نمی‌شود.

نحوه قرار دادن کامنت در جاوا اسکریپت: 

برای قرار دادن کامنتی که یک خط باشد، کافی است در ابتدای خط علامت // قرار دهید. هر چه در آن خط و قبل زدن اینتر نوشته شود، کامنت محسوب می‌شود و اجرا نخواهد شد.

اگر بخواهید چند خط پشت سر هم را کامنت کنید، باید در ابتدای محلی که می‌خواهید کامنت شود علامت */ و در انتهای آن علامت */ قرار دهید. بدین ترتیب هر چند خطی که بین این دو علامت نوشته شود خوانده و اجرا نخواهد شد.

مثال:

کامنت یک خطی با کمک */

/* this block is commented and won't do anything */

کامنت چند خطی با کمک */

/* این بلاک کد کامنت شده است

و هیچ گونه اتفاقی

در این قسمت رخ نخواهد داد */

کامنت یک خطی با کمک //

//کامنت در یک خط

کامنت چند خطی با کمک //

//مجموعه ای از 

//کامنت‌های

//یک خطی

در آخر باز هم توصیه می‌کنیم برای خواناتر شدن کد و درک بهتر آن توسط خودتان و دیگران، حتما در بین کدهایتان کامنت بگذارید و عملکرد و نکات مبهم آن را توضیح دهید.

تعریف بلاک کد:

بلاک کد در واقع مجموعه‌ای از جملات یک زبان برنامه‌نویسی است که در کنار هم، یک بلاک یا مجموعه را تشکیل می‌دهند. مثلا فانکشن‌ها و کارهایی که در داخل {} یک فانکشن نوشته می‌شود یک بلاک کد را تشکیل می‌دهند. 

{

StatementList

}

در مثال بالا هر چه بین دو علامت { نوشته شده است به‌عنوان بلاک کد شناخته می‌شود.

مفهوم بلاک در جاوا اسکریپت

یک مفهوم بسیار مهم دیگر در جاوا اسکریپت، مفهوم scope است. scope مشخص می‌کند که به متغیرها و اطلاعات یک بلاک کد، در کجا دسترسی داریم و می‌توانیم استفاده کنیم. در ادامه به این موضوع به‌صورت عمیق‌تر خواهیم پرداخت.

به‌طور کلی اولین نکته این است که جاوا اسکریپت کدها را از بالا به پایین می‌خواند. پس نمی‌توانید تکه کدی را که هنوز ننوشته‌اید در پایین صفحه استفاده کنید. مثلا اگر می‌خواهید یک فانکشن یا هر متغیر دیگری را در صفحه صدا بزنید، باید ابتدا آن‌ را در بالاتر تعریف کنید و در پایین‌تر صدا بزنید؛ نه اینکه در بالاتر صدا بزنید و در خط بعدی آن را تعریف کنید.

اهمیت بلاک در تعریف متغیرها:

متغیرها در جاوا اسکریپت به دو دسته تقسیم می‌شوند: متغیرهای عمومی و Global. در واقع زمانی که یک متغیر را درون یک فانکشن تعریف می‌کنید، تفاوت بسیار زیادی دارد تا آن را بیرون یک فانکشن تعریف کنید. 

متغیرهای عمومی:

زمانی که یک متغیر در خارج بلاک کد تعریف می‌شود، به آن متغیر عمومی می‌گوییم.  به متغیر عمومی همه جا دسترسی داریم و می‌توانیم همه جا آن را صدا بزنیم یا تغییر بدهیم.

متغیرهای محلی:

متغیرهای محلی در داخل یک بلاک کد تعریف می‌شوند. در واقع زمانی که شروع و تعریف یک متغیر در داخل مثلا یک فانکشن باشد، این متغیر تنها درون آن فانکشن قابل تعریف و استفاده خواهد بود و بیرون آن نمی‌توانید از آن استفاده کنید. این موضوع خصوصا زمانی که تعداد متغیرها زیاد می‌شود و نمی‌خواهید برای هر کار کوچکی یک متغیر عمومی تعریف کنید استفاده می‌شود.

var globalVariable;

function changeMe(){

     var localVaribale = "i am local to this function";

      globalVariable = "i am global varibable"

اگر localVaribale را در داخل فانکشن صدا بزنیم بدان دسترسی خواهیم داشت چون این متغیر تنها وابسته و قابل استفاده در همین فانکشن خواهد بود//

}

در این مثال زمانی که localVaribale را در داخل فانکشن تعریف کنیم، تنها درون این فانکشن بدان دسترسی داریم. پس اگر خارج فانکشن آن را صدا بزنیم دیگر نمی‌توانیم آن را استفاده کنیم و ارور undefined خواهیم گرفت. 

ولی متغیر عمومی globalVariable که در خارج فانکشن و بلاک کد فانکشن تعریف شده است، در داخل و بیرون فانکشن بدان دسترسی خواهیم داشت. برای تعریف یک متغیر گلوبال و عمومی، کافی است آن را خارج هر گونه بلاک کد قرار دهید تا همه جا بدان دسترسی داشته باشید. 

برای مثال اگر در ادامه و خارج فانکشن بخواهیم این دو متغیر را نمایش دهیم، متغیر گلوبال درست نمایش داده خواهد شد.

alert(globalVariable) //نتیجه درست برخواهد گشت

alert(localVaribale) // این متغیر ناشناخته خواهد بود 

همچنین هر بلاک کد (هر چه بین دو آکولاد نوشته می‌شود یک بلاک کد است) دارای اسکوپ اختصاصی خود است. یعنی اگر متغیری را درون یک فانکشن تعریف کرده باشید بیرون فانکشن نمی‌توانید آن را استفاده کنید. برای استفاده و تغییر یک متغیر درون فانکشن و دسترسی به آن بیرون فانکشن باید آن را بیرون فانکشن تعریف کنید. بدین ترتیب متغیر شما گلوبال یا عمومی می‌شود و وقتی درون فانکشن استفاده شود مشکلی ندارد. حتی مقدار آن بعد از اجرای فانکشن نیز تغییر می‌کند و مشکلی از بابت تغییر آن در فانکشن نیست.

چه موقع از متغیرهای محلی استفاده می‌کنیم؟ 

فرض کنید که ۱۰ فانکشن دارید که در هر کدام از آن‌ها به یک متغیر جداگانه نیاز دارید که مثلا قیمت نهایی را حساب کند! اگر تمام متغیرهای قیمت نهایی را بخواهید گلوبال تعریف کنید، باید به تعداد فانکشن‌ها متغیرهای گلوبال تعریف کنید. همچنین هر بار که فانکشن صدا زده می‌شود، مقدار متغیر گلوبال شما با مقدار جدید عوض می‌شود. اما اگر متغیر شما به‌صورت محلی در داخل فانکشن تعریف شود، فقط در همان فانکشن در دسترس خواهد بود و دیگر ناچار نیستید متغیرهای جداگانه برای هر فانکشن تعریف شود. همچنین از عدم تداخل متغیرها و قاطی شدن مقدارها در فانکشن‌های مختلف نیز خیالتان راحت خواهد بود.

سخن پایانی

درک درست از متغیرهای عمومی و گلوبال نقش مهمی در دیباگینگ و کیفیت کدنویسی شما در جاوا اسکریپت دارد. علت بسیاری از خطاهای ساده و پیش پا افتاده‌ای که ممکن است ساعت‌ها وقت شما را هدر بدهد، همین عدم درک دقیق از متعیرهای عمومی و محلی است. پس در یادگیری این موضوع همتی بیش از پیش داشته باشید.

تبلیغات
داغ‌ترین مطالب روز

نظرات

تبلیغات