بررسی عبارات در جاوا اسکریپت

یه سوال

میدونید خروجی این قطعه کد چی میشه ؟

بنظرم قبل از اینکه برید و پایین تر رو نگاه کنید، جوابی که فکر میکنید ممکنه درست باشه رو یادداشت کنید :)

این یکی چی؟ درباره‌ی این چی فکر میکنید؟

شاید این دوتا قطعه کد تو نگاه اول تفاوت خاصی نداشته باشن، اما اگه اجراشون کنید، میبینید که توی نتیجه خیلی فرق داره :)

توی قطعه کد اولی ، وقتی که بعد از دستور return ، فاصله افتاده و { foo: 'bar' } توی خط بعد ساخته شده ، چیزی که اجرا میشه اینه:

return ;

و در نتیجه خروجی هم برابر میشه با undefined.

اما قطعه کد دوم همون جواب مورد انتظار ما ینی

return { foo: 'bar' }

رو انجام میده که خب منطقیه

اما این اتفاق برای چی رخ میده؟

موتور اصلی جاوا اسکریپت، طوری تعبیه شده که در این موارد، عبارتی رو درنظر میگیره که در مقابل دستور نوشته شده باشه، وگرنه خودش یه ; میذاره انتهای خط.

ینی اینجا وقتی به عبارت return میرسه ، چیزی برای انجام دستور نمیبینه، پس جلوش یه ; در نظر میگیره و undefined میشه جواب ما