اولین چیزی که ما باید یاد بگیریم ساختار یک قطعه کد هست
دستورات و ساختارهایی که یه سری کارای خاصی رو انجام میدن
توی آموزش قبلی هم یه سری دستور دیدیم , ('سلام دنیا !')alert که یک پیغام «سلام دنیا!» رو نشون میداد میتونیم تعداد زیادی دستور داشته باشیم و با استفاده از سمیکالن ; میتونن از هم دیگه جدا بشن
بذارین یک مثال بزنم تا بهتر متوجه بشین، اینجا ما "سلام دنیا" توی دو تا دستور alert جدا کردیم
alert('سلام'); alert('دنیا');
معمولا دستورات ها توی خط های جدا نوشته میشن تا خوانایی کد بالا بره :
alert('سلام'); alert('دنیا');
اگه خط شکسته بشه میتونیم نقطه ویرگول نذاریم
این باز هم اجرا میشه:
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("یه خطا خواهیم داشت")[1, 2].forEach(alert)
یه لحظه صبر کن ببینم چی گفت ؟!!! موتور ؟ موتور چیه دیگه !
توی این مقاله راجع به موتور های جاوا اسکریپت توضیح دادم که میتونین برین بخونین
اما باید توی دو تا دستور جدا باشه، اینجوری ادغام کردن کردنشون با هم دیگه اشتباهه برای همون خطا میده
توصیه میکنیم که نقطه ویرگول رو بین دستور های مختلف بذارین حتی اگه با یه خط جدید از هم دیگه جدا شدن، این قانون رو همه به صورت گسترده قبول کردن
یه بار دیگه توجه کنین، ممکنه خیلی جاها از نقطه ویرگول استفاده نکنین اما استفاده ازش به خصوص اگه تازهکار هستین امن تره
با گذر زمان برنامه ها پیچیدهتر و پیچیدهتر میشن و لازمه که توضیحاتی اضافه کنیم که معلوم باشه فلان خط از کد داره چیکار میکنه و چرا
توضیحات رو میشه هر جایی از اسکریپت گذاشت اونا روی اجرا شدن کد تاثیر نمیذارن چون موتور اونا رو خیلی ساده نادیده میگیره
توضیحات یک خطی با دو تا خط مورب یا همون اسلش رو به جلو شروع میشه یعنی اینجوری //
اگه اینجوری \\ بنویسین درست نیست
این مدل از توضیحات میتونه در ادامه دستور بیاد یا این که کلا توی یک خط جدا باشه :
// این توضیح یک خط رو کامل گرفته alert('سلام'); alert('دنیا'); // این توضیحات در ادامه دستور اومدن
توضیحات چند خطی با یک خط مورب رو به جلو و ستاره شروع میشه و با یک ستاره و خط رو به جلو تموم میشه یعنی اینجوری :
/* اینجوری شروع میشه و یه سری توضیحات ... */ و اینجوری تموم میشه alert('سلام'); alert('دنیا');
هر چی توی توضیحات بنویسیم اجرا نمیشه و نادیده گرفته میشه پس اگه ما کد هم بینش بنویسیم اجرا نمیشه
بعضی وقتا لازم میشه تا به صورت موقتی یه تیکه کد رو غیرفعال کنیم اینجوری میتونیم انجامش بدیم :
/* alert('سلام'); */ alert('دنیا');
توی بیشتر ویرایشگرا، یه خط از کد رو میتونیم با زدن دکمه های /+Ctrl تبدیلش کنیم به توضیح یک خطی و برای توضیحات چند خطی (اول اون تیکهای که میخواین رو انتخاب کنین) و بعدش /+Ctrl+Shift رو بزنین اگه از مک(Mac) استفاده میکنین به جای Ctrl از Cmd و به جای Shift از Option استفاده کنین
اگه به صورت تو در تو بخواین توضیحات بنویسین به خطا بر میخورین
به مثال زیر توجه کنین :
/* /* توضیحات تو در تو ?!? */ */ alert( 'دنیا' );
لطفا توی کداتون توضیحات بنویسین :)
با نوشتن توضیحات حجم کداتون زیاد میشه ولی این مشکلی نداره ابزار های زیادی وجود داره که کدتون رو قبل از انتشار روی سرور فشرده میکنه و توضیحات رو هم پاک میکنه، پس توی اسکریپت نهایی هیچ توضیحاتی وجود نداره، توضیحات هیچ تاثیر منفی توی برنامه نداره.
اگر توی این مقاله مشکلی بود یا خواستین توی این پروژه مشارکت کنین این لینک گیتهابش هست.