بررسی اجمالی فصل

در پایان این فصل، شما توانایی شناسایی تفاوت بین تایپ های mutable و immutable در جاوا اسکریپت، دستکاری دیتاتایپ های داخلی جاوا اسکریپت، تبدیل دیتا از یک تایپ به تایپ دیگه، فرمت کردن دیتاتایپ ها برای نمایش اونها، و دونستن تفاوت بین expression و statement رو پیدا میکنید.

معرفی فصل

توی فصل قبل، یه دوری توی جاوا اسکریپت، runtime هاش، و تاریخچه اش زدیم. اون فصل به شما در مورد اینکه جاوا اسکریپت چی هست، چه کاری میتونه انجام بده و نقش جاوا اسکریپت توی صنعت توسعه نرم افزار های اینترنتی یک ایده کلی داده بود.

فهمیدن کد برای تازه کار ها میتونه سخت باشه و جاوا اسکریپت هم از این قاعده مستثنی نیست. انعطاف پذیری، سینتکس گسترده و الگو های کد مختلفی که داره میتونه برای افراد ناآشنا دلهره آور باشه!

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

توی این فصل، قراره نگاه نزدیک تری به سیستم تایپ (type system) توی جاوا اسکریپت بندازیم. هر زبان برنامه نویسی یک type system داره. همونطور که از اسمشون پیداست، تایپ ها نوع دیتایی که توی متغیر یا پارامتر فانکشن ذخیره شده رو تعیین میکنن. تایپ ها معمولا به دو دسته تقسیم میشن: اولیه (primitive) و پیچیده (complex).

توی جاوا اسکریپت، تمام دیتاتایپ های اولیه، تغییرناپذیر (immutable) هستن. این به این معناست که مقدارشون رو نمیشه توی حافظه عوض کرد. میشه به یک متغیر مقدار های جدید داد، اما دیتای ذخیره شده توی خود حافظه رو نمیشه مستقیما دستکاری کرد. این با زبان های دیگه فرق داره؛ مثل C++، که توش میشه با کمک فانکشن های کمکی و pointer ها مقدار های ذخیره شده توی حافظه رو مستقیما تغییر داد. توی جاوا اسکریپت، زمانی که از یک مقدار primitive یک متغیر توی متغیر دیگه استفاده میکنیم، دیتای مربوط بهش توی حافظه به متغیر جدید کپی میشه. از این رو، تغییر مقدار یکی از این متغیر ها روی متغیر دیگه تاثیری نمیذاره.

اما دیتا تایپ های complex یه جور دیگه کار میکنن. بهشون reference type هم گفته میشه. تایپ های رفرنس شامل تایپ Object و همه مشتقاتش، مثل Array، Date و Function میشه. همونطور که از اسمش پیداست، تمام تایپ های رفرنس توسط یک مرجع (reference) منتقل میشن. از این رو، اگه یک آبجکت توی یک رفرنس تغییر کنه، اون آبجکت توی تمام اون رفرنس هایی که شاملش میشن تغییر پیدا میکنه، از اونجایی که تمام رفرنس ها به یک دیتا توی حافظه اشاره میکنن.

یک تایپ complex به معنای ساده تایپی هست که کارایی بیشتری نسبت به یک تایپ primitive داره. برای مثال، یک مقدار Date راه ها و ابزارای بیشتری برای نمایش تاریخ داره، در حالی که که آبجکت ها میتونن دارای مقادیر تودرتوی زیادی مثل primitive ها و تایپ های complex دیگه باشن.


نکته: تایپ های فانکشن توی این فصل زیاد باز نمیشن و در عوض توی فصل بعدی همراه با معرفی prototype ها در موردشون صحبت میشه.


به همه primitive ها و تایپ های رفرنس که از قبل وجود دارن، دیتا تایپ های داخلی (built-in) گفته میشه. هر کدوم از این تایپ ها یک آبجکت دارن که دارای یک سری فانکشن برای کار با اون دیتا تایپ هست. این فانکشن ها ممکنه به صورت جداگونه (external) با دادن مقدار به عنوان پارامترشون، روی دیتایی که میخوایم فراخوانی بشن و کار کنن، و یا به عنوان یک متد از یک تایپ استفاده بشن. مورد دوم همچنین برای چندین primitive قابل استفاده هست، علیرغم اینکه اونها به عنوان آبجکت های literal در سیستم تایپ (type system) جاوا اسکریپت وجود ندارن. بعدا توی این فصل بیشتر راجع به این قابلیت صحبت میکنیم.