پرش به محتویات

ساختار کد

اولین چیزی که ما باید یاد بگیریم ساختار یک قطعه کد هست

دستورات (Statements)

دستورات و ساختارهایی که یه سری کارای خاصی رو انجام میدن توی آموزش قبلی هم دستوراتی رو دیدیم , ‍‍('سلام دنیا !')alert که یک پیغام «سلام دنیا!» رو نشون میداد

میتونیم تعداد زیادی دستور داشته باشیم و با استفاده از سمی‌کالن ; میتونن از هم دیگه جدا بشن

بذارین یک مثال بزنم تا بهتر متوجه بشین، اینجا ما "سلام دنیا" توی دو تا دستور alert جدا کردیم

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

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

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

نقطه ویرگول (Semicolon)

اگه خط شکسته بشه میتونیم نقطه ویرگول نذاریم

این باز هم اجرا میشه:

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

توی این مثال بالا مفسر جاوا اسکریپت وقتی به یک خط شکسته شده میرسه اونو یه نقطه ویرگول فرضی در نظر میگیره و خودش اونو قرار میده برامون، این ویژگی اسمش «درج خودکار نقطه ویرگول» هست

توی بیشتر موارد، یک خط جدید، یک نقطه ویرگول فرضی حساب میشه. اما «بیشتر موارد» به معنی «همیشه» نیست !

بعضی جاها هست که خط جدید به معنی نقطه ویرگول نیست برای مثال :

alert(3 +
1
+ 2);

خروجی کد بالا ۶ هست برای این که جاوا اسکریپت اینجا نقطه ویرگول اضافه نکرده، خیلی واضحه که اگه اخر خط علامت "+" باشه یعنی این عبارت ناقص هست پس نقطه ویرگول لازم نیست

اما بعضی جاها هست که جاوا اسکریپت گیج میشه و نمیدونه که باید نقطه ویرگول بذاره بالاخره یا نذاره ! پیدا کردن مشکل توی این موارد خیلی سخته

مثالی از خطا

اگه کنجکاوین که یک مثال از این مدل خطا ها رو ببینین این کد رو بررسی کنین :

[1, 2].forEach(alert)

فعلا لازم نیست فکر کنین که معنی [] و forEach چیه بعدا یاد میگیرم چی هستن الان فقط یادتون باشه که نتیجه کد بالا چیه اول عدد ۱ رو نشون میده و بعدش عدد ۲

خب بریم تا یک alert‍ قبل از کد اضافه کنیم و اون رو با نقطه ویرگول تموم نکنیم

alert("خطایی اتفاق خواهد افتاد")

[1, 2].forEach(alert)

حالا اگه ما کد بالا رو اجرا کنیم فقط alert اول اجرا میشه و بعد ما یه خطا داریم !‌ اما اگه بعد از alert اول یه نقطه ویرگول بذاریم همه چیز درست میشه

alert("یوهو همه چی مرتبه اینجا !");

[1, 2].forEach(alert)

اگه کد بالا رو اجرا کنین اول "یوهو همه چی مرتبه اینجا !" نشون داده میشه و بعدش به ترتیب عدد های ۱ و ۲

این خطا بدون نقطه ویرگول اتفاق میوفته چرا؟! چون که جاوا اسکریپت قبل از علامت کروشه [...] نقطه ویرگول نمیذاره

پس، چون نقطه ویرگول به صورت خودکار اضافه نشده کد توی مثال قبلی یه عبارت واحد در نظر گرفته میشه و موتور یه همچین چیزی میبینه:

alert("There will be an error")[1, 2].forEach(alert)

اما باید توی دو تا دستور جدا باشه، اینجوری ادغام کردن کردنشون با هم دیگه اشتباهه برای همون خطا میده

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

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

توضیحات (Comments)

با گذر زمان برنامه ها پیچیده‌تر و پیچیده‌تر میشن و لازمه که توضیحاتی اضافه کنیم که معلوم باشه فلان خط از کد داره چیکار میکنه و چرا

توضیحات رو میشه هر جایی از اسکریپت گذاشت اونا روی اجرا شدن کد تاثیر نمیذارن چون موتور اونا رو خیلی ساده نادیده میگیره

توضیحات یک خطی با دو تا خط مورب یا همون اسلش رو به جلو شروع میشه یعنی اینجوری //

اگه اینجوری \\ بنویسین درست نیست

این مدل از توضیحات میتونه در ادامه دستور بیاد یا این که کلا توی یک خط جدا باشه :

 این توضیحات یک خط کامل رو گرفته //
alert('سلام');

alert('دنیا'); //   این توضیحات در ادامه دستور اومدن

توضیحات چند خطی با یک خط مورب رو به جلو و ستاره شروع میشه و با یک ستاره و خط رو به جلو تموم میشه یعنی اینجوری :

 /* اینجوری شروع میشه 
و یه سری توضیحات ...

*/ و اینجوری تموم میشه 
alert('سلام');
alert('دنیا');

هر چی توی توضیحات بنویسیم اجرا نمیشه و نادیده گرفته میشه پس اگه ما کد هم بینش بنیوسیم اجرا نمیشه

بعضی وقتا لازم میشه تا به صورت موقتی یه تیکه کد رو غیرفعال کنیم اینجوری میتونیم انجامش بدیم :‌

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

از کلید های میانبر استفاده کنین

توی بیشتر ویرایشگرا، یه خط از کد رو میتونیم با زدن دکمه های /+Ctrl تبدیلش کنیم به توضیح یک خطی و برای توضیحات چند خطی (اول اون تیکه‌ای که میخواین رو انتخاب کنین) و بعدش /+Ctrl+Shift رو بزنین اگه از مک(Mac) استفاده میکنین به جای Ctrl از Cmd و به جای Shift از Option استفاده کنین

توضیحات تو در تو پشتیبانی نمیشه!

اگه به صورت تو در تو بخواین توضیحات بنویسین به خطا بر میخورین

به مثال زیر توجه کنین :

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

لطفا توی کداتون توضیحات بنویسین :)

با نوشتن توضیحات حجم کداتون زیاد میشه ولی این مشکلی نداره ابزار های زیادی وجود داره که کدتون رو قبل از انتشار روی سرور فشرده میکنه و توضیحات رو هم پاک میکنه، پس توی اسکریپت نهایی هیچ توضیحاتی وجود نداره، توضیحات هیچ تاثیر منفی توی برنامه نداره.