۲۱ سپتامبر ۲۰۲۲

ساختار کد

اولین چیزی که خواهیم آموخت نحوه ساخت بلوک کد است.

دستورات (Statements)

Statement ها دستورات و کدهایی هستند که باعث وقوع چیزی می‌شوند.

پیش از این دستوری دیده‌ایم : alert('سلام، دنیا') که پیام «سلام، دنیا» را نمایش می‌داد.

ما به هر تعداد دستور که بخواهیم می‌توانیم در کدهای خود داشته باشیم. دستورها از طریق semicolon (سِمی‌کالِن) از هم تفکیک می‌شوند.

‌برای نمونه ما در اینجا می‌توانیم عبارت «سلام، دنیا» را در دو alert داشته باشیم :

alert('سلام'); alert('دنیا');

معمولا دستورها به منظور خوانایی کدها، در خطوط جداگانه نوشته می‌شوند :

alert('سلام');
alert('دنیا');

Semicolonها

ممکن است Semicolon در انتهای یک Line Break حذف شود.

این کد کار خواهد کرد :

alert('سلام')
alert('دنیا')

در اینجا جاوااسکریپت Line Break را به صورت ضمنی به عنوان یک Semicolon در نظر می‌گیرد، که به آن درج خودکار semicolon گفته می‌شود.

در نظر داشته باشید که همیشه Line Break به معنی Semicolon نیست.

به طور نمونه :

alert(3 +
1
+ 2);

خروجی این کد 6 خواهد بود به این دلیل که جاوااسکریپت Semicolon ـی در انتهای هر Line Break قرار نمی‌دهد. همانطور که مشخص است زمانی که "+" در انتهای هر خط قرار می‌گیرد، عبارت کامل نمی‌شود و در نتیجه به Semicolon نیازی نیست.

اما شرایطی نیز وجود دارد که جاوااسکریپت در مکان‌هایی که به Semicolon نیاز است «شکست می‌خورد».

ارورهایی که در چنین شرایطی رخ می‌دهند به سختی پیدا شده و رفع آن‌ها سخت است.

نمونه‌ای از یک ارور

اگر واقعا به دنبال دیدن چنین اروری هستید کد زیر را آزمایش کنید :

alert("سلام");

[1, 2].forEach(alert);

فعلا نیازی نیست تا معنی [] و forEach را متوجه شوید. در آینده با آن‌ها آشنا خواهیم شد. فعلا در نظر داشته باشید که نتیجه‌ی این کد نمایش عدد 1 و 2 است.

حال بیایید alert را پیش از این کد قرار دهیم و در انتهای آن semicolon قرار ندهیم.

alert("سلام")

[1, 2].forEach(alert);

تفاوت در مقایسه با کد بالا فقط یک کاراکتر است: semicolon انتهای خط اول دیگر وجود ندارد.

حال اگر کد را اجرا کنیم فقط Hello اول را خواهیم دید و سپس با ارور مواجه می‌شویم. هیچ عددی دیگر وجود ندارد.

دلیل وقوع این ارور آن است که جاوااسکریپت پیش از براکت‌ها [...]، semicolon در نظر نمی‌گیرد. از آنجایی که semicolon به صورت خودکار در انتهای alert اول قرار داده نمی‌شود ، تمام کد به عنوان یک دستور در نظر گرفته می‌شود.

موتور جاوااسکریپت کد را به این شکل خواهد دید :

alert("سلام")[1, 2].forEach(alert);

عجیب به نظر می‌رسد، نه؟ چنین ادغامی در این مورد اشتباه است. ما باید یک semicolon بعد از alert قرار دهیم تا کد درست کار کند.

این اتفاق می‌تواند در موقعیت‌های دیگری نیز بیفتد.

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

کامنت‌ها (Comments)

هر چه به جلو می‌رویم برنامه ما پیچیده‌تر می‌شود و قرار دادن کامنت (Comment) برای واضح‌تر شدن کد ضروری می‌شود.

کامنت‌ها می‌توانند در هر جایی از اسکریپت قرار بگیرند و تاثیری در اجرای دستورات ندارند، چراکه به سادگی توسط موتور جاوااسکریپت نادیده گرفته می‌شوند.

کامنت تک خطی با دو Forward Slash یعنی // شروع می‌شود.

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

مانند :

// این کامنت یک خط را برای خودش اشغال می‌کند
alert('سلام');

alert('دنیا'); // این کامنت بعد از دستور می‌آید

کامنت‌های چند خطی با یک / و علامت * شروع شده و با علامت * و سپس / پایان می‌یابند.

مانند:

/* یک مثال با دو پیام.
این یک کامنت چند خطی است.
*/
alert('سلام');
alert('دنیا');

همانطور که گفتیم دستوراتی که در کامنت قرار می‌گیرند اجرا نمی‌شوند،

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

/* کامنت کردن کد
alert('سلام');
*/
alert('World');
از کلیدهای میان‌بُر استفاده کنید

بعضی ویرایشگرها قابلیت کامنت کردن کد از طریق کلیدهای میان‌بُر را دارند. معمولا ctrl + / در ویندوز کامنت‌های تک خطی و ctrl + shift + / می‌تواند کامنت چند خطی بوجود آورد (باید ابتدا بخشی از کد را انتخاب نمایید). همینطور در Mac می‌توانید از کلید cmd بجای ctrl استفاده نمایید.

کامنت‌های تودرتو حساب نمی‌شوند

امکان قرار دادن یک کامنت داخل کامنتی دیگر وجود ندارد.

این کد با ارور مواجه خواهد شد :

/*
  /* کامنت تودرتو ?!? */
*/
alert( 'دنیا' );

لطفا برای استفاده از کامنت در کدهای خود مردد نباشید.

کامنت‌ها حجم کد را افزایش می‌دهند، اما این اصلا اشکال نیست. ابزارهای گوناگونی وجود دارند که قبل از انتشار برنامه روی سروِر کدهای شما را کم حجم و کامنت‌ها را حذف می‌کنند. بنابراین کامنت‌ها روی خروجی نهایی تاثیری نخواهند داشت.

در ادامه آموزش در بخش سبک کدنویسی نحوه بهتر نوشتن کامنت‌ها را خواهیم آموخت.

نقشه آموزش