در دنیای پویای توسعه وب، دادهها نقش مهمی را ایفا میکنند. دنیای جاوا اسکریپت پر از انواع مختلف داده یا Data Type است که در توسعه نرمافزارها و وبسایتها کاربردهای متفاوتی دارند. در این مقاله، با انواع دیتا تایپ در زبان جاوا اسکریپت آشنا میشویم و یاد میگیریم چگونه از آنها در کدهای جاوا اسکریپت استفاده کنیم.
آنچه در این نوشته خواهیم داشت
انواع دیتا تایپ در جاوا اسکریپت
در جاوا اسکریپت، دادهها به دو دسته اصلی تقسیم میشوند: دادههای Primitive (اولیه) و دادههای Non-Primitive (غیر اولیه).
۱. دادههای Primitive (اولیه)
دادههای Primitive دادههایی هستند که مستقیماً در حافظه ذخیره میشوند. این نوع دادهها اعداد، رشتهها، مقادیر بولین و مقادیر undefined و null را شامل میشوند.
فرض کنید یک متغیر به نام “credit” دارید و مقدار این متغیر برابر با ۵۰ دلار است. در اینجا “credit” یک متغیر با داده Primitive است. مقدار ۵۰ دلار برای این متغیر در حافظه ذخیره شده است.
let credit = 50;
۲. دادههای Non-Primitive (غیر اولیه یا مرجع)
دادههای Non-Primitive در واقع مجموعهای از دادههای Primitive هستند که به عنوان مرجع (References) در حافظه ذخیره میشوند و به جای نگهداری مقدار واقعی آن متغیر، به مکان ذخیرهسازی داده اشاره دارند. این دادهها معمولاً شامل آرایهها، اشیاء (Objects) و توابع (Functions) هستند.
فرض کنید شما یک متغیر به نام “BooksList” دارید و این متغیر مرجع، به یک لیست از کتابها اشاره میکند. در اینجا “BooksList” یک متغیر با داده Non-Primitive است. این متغیر به مکانی اشاره میکند که لیستی از کتابها ذخیره شده است، اما مقادیر کتابها به طور مستقیم در “BooksList” نیستند.
let BooksList = ["Book 1", "Book 2", "Book 3"];
معرفی دیتاتایپهای جاوا اسکریپت
در زبان جاوا اسکریپت ۸ دیتا تایپ وجود دارد:
- String
- Number
- BigInt
- Boolean
- Undefined
- Null
- Symbol
- Object
تمام این دادهها به غیر از Object، از نوع دادههای اولیه یا Primitive هستند.
در ادامه این مقاله به معرفی تمام این دیتا تایپها خواهیم پرداخت.
اگر میخواهید بیشتر با ویژگیهای جاوا اسکریپت و تفاوتهای مهمش آشنا شوید، «مقایسه جامع زبان های تایپ اسکریپت و جاوا اسکریپت» را بخوانید.
۱. String
از رشته یا String برای ذخیره متن استفاده میشود. در زبان جاوا اسکریپت رشتهها بین دو علامت نقل قول ” ” یا ‘ ‘ نشان داده میشود. برای مثال:
//strings example const firstName = 'John'; const lastName = "wick";
اگر متن رشته را بین دو Backticks یا ` ` قرار دهید، میتوانید متغیرها یا عبارات مورد نظرتان را درون `{}$` قرار دهید تا مقدار آنها به صورت داینامیک در رشته قرار گیرد.
برای مثال، فرض کنید که یک متغیر به نام name وجود دارد که مقدار آن برابر با “John” است، و میخواهیم این مقدار را در یک رشته نمایش دهیم.
let name = "John"; let message = `Hello, ${name}!`; console.log(message);
در این مثال، `{name}$` درون رشته backtick قرار داده شده است، و مقدار متغیر `name` به جای `{name}$` در رشته قرار میگیرد. بنابراین، پس از اجرای کد، متغیر `message` مقدار “Hello, John!” را خواهد داشت. این روش به شما امکان ایجاد رشتههای پویا با ترکیب متغیرها و مقادیر دیگر را میدهد.
بیشتر بخوانید: “آرایه (Array) تاروپود عناصر در جاوااسکریپت“
۲. Number
Number نشاندهنده اعداد صحیح و شناور (اعشاری و نمایی) است. این اعداد باید در بازه (253 – 1) + تا (253 – 1)- قرار داشته باشند. مثلا:
//number example const number1 = 3; const number2 = 3.433; const number3 = 3e5 // 3 * 10^5
مقادیر +بینهایت و -بینهایت و مقادیر تعریف نشده (Not a number) هم جزو دیتاتایپ Number محسوب میشوند.
const number1 = 3/0; console.log(number1); // Infinity const number2 = -3/0; console.log(number2); // -Infinity // strings can't be divided by numbers const number3 = "abc"/3; console.log(number3); // NaN
۳. BigInt
در جاوا اسکریپت زمانیکه اعداد صحیح خیلی بزرگ باشند و از محدودهی معمول اعداد عدد صحیح خارج شوند، از دیتا تایپ BigInt استفاده میشود.
برای تعریف یک عدد BigInt، کافی است به انتهای عدد صحیح مورد نظر حرف n را اضافه کنید. به این شکل جاوا اسکریپت متوجه میشود این عدد باید به صورت BigInt تفسیر شود. به عنوان مثال،
const bigIntNumber = 1234567890123456789012345678901234567890n;
۴. Boolean
در جاوا اسکریپت، دیتاتایپ Boolean به منظور نمایش مقادیر منطقی True و False استفاده میشود. این دو مقدار معمولاً برای کنترل شرایط و انتخابهای منطقی در برنامهنویسی استفاده میشوند. به عنوان مثال، شما میتوانید با استفاده از این مقادیر و بر اساس وضعیت “بله” یا “خیر” آنها تصمیم بگیرید که آیا عملیاتی انجام شود یا نه.
به عنوان مثال، در کد زیر دو متغیر به نام “dataChecked” و “valueCounted” تعریف شدهاند:
const dataChecked = true; // .مقدار این متغیر برابر با "بله" است const valueCounted = false; // .مقدار این متغیر برابر با "خیر" است
۵. undefined
در جاوا اسکریپت، اگر متغیری تعریف شده باشد اما به آن مقداری اختصاص داده نشده باشد، مقدار این متغیر undefined است. به عنوان مثال، در کد زیر متغیری به نام “name” تعریف شده است، اما هیچ مقداری به آن اختصاص داده نشده است. بنابراین مقدار آن به undefined تغییر پیدا کرده و خروجی کد زیر کد، “undefined” خواهد بود:
let name; console.log(name); // خروجی: undefined
۶. null
در جاوا اسکریپت، null به معنای مقدار خالی یا ناشناخته (unknown) است. به عبارت دیگر، زمانی که یک متغیر برابر با null تنظیم شده باشد، به معنای این است که آن متغیر هنوز مقداری ندارد یا مقدارش ناشناخته است.
به عنوان مثال، در کد زیر متغیری به نام “number” تعریف شده است و مقدار آن برابر با null تنظیم شده است. این کد نشان میدهد که متغیر “number” خالی است یا مقدارش ناشناخته است.:
const number = null;
توجه کنید که null با NULL یا Null یکسان نیست و باید به صورت کوچک تایپ شود تا به درستی تشخیص داده شود.
تفاوت undefined و null در چیست؟
درک تفاوت میان null و undefined در جاوا اسکریپت ممکن است در ابتدا کمی گیجکننده باشد، اما این دو Data Type دارای معانی و کاربردهای کاملا متفاوتیاند.
undefined نشاندهنده این است که یک متغیر تعریف شده است اما به آن هیچ مقداری اختصاص داده نشده است. به عبارتی، undefined نشانگر وضعیت عدم تعریف مقدار است.
از طرف دیگر null نشاندهنده این است که یک متغیر تعریف شده و مقداری به آن اختصاص داده شده است که یا به صورت آگاهانه برابر با null تنظیم شده است و یا مقدارش نامشخص است.
۷. symbol
در جاوا اسکریپت، دیتا تایپ Symbol مقادیریاند که نمیتوانند تغییر کنند و هر Symbol به طور یکتا و منحصر به فرد ایجاد میشود.
به عنوان مثال، در کد زیر دو متغیر به نام “value1” و “value2” تعریف شدهاند، که هر دو دارای مقدار ‘hello’ هستند. اگرچه مقدار متغیرها یکسان است، در واقعیت این دو مقدار به عنوان دو Symbol متفاوت در نظر گرفته میشوند. به این دلیل که Symbolها منحصر به فردند و هر Symbol تنها یک بار تعریف میشود. به همین دلیل، نتیجه مقایسه دو Symbol با یکدیگر همیشه “false” خواهد بود.
const value1 = Symbol('hello'); const value2 = Symbol('hello');
از Symbol معمولاً برای ایجاد ویژگیهای یکتا در آبجکتها و اجتناب از تداخل نام آنها در برنامه استفاده میشود.
۸. Object
در جاوا اسکریپت، یک شیء (Object) نوعی داده پیچیده است که به برنامهنویس اجازه میدهد تا مجموعههایی از دادهها را ذخیره کند. به عبارت دیگر، Object این امکان را میدهد تا مجموعهای از اطلاعات مختلف را در یک جا نگهداری کنیم.
به عنوان مثال، در کد زیر یک شیء به نام “student” تعریف شده است. این شیء دارای سه ویژگی است: “firstName” که مقدار “John” را دارد، “lastName” که مقدار null دارد (بدون مقدار)، و “class” که مقدار ۱۰ دارد. Object به برنامهنویس این امکان را میدهد تا اطلاعات مختلف مربوط به یک شخص (در اینجا یک دانشآموز) را در یک جا گردآوری و از آن اطلاعات استفاده کند.
Object برای مواقعی که میخواهیم دادههای متنوع و مرتبط را با هم ذخیره و مدیریت کنیم، بسیار مفید است.
const student = { firstName: 'John', lastName: null, class: 10 };
بیشتر بخوانید: “مفهوم شیگرایی به زبان ساده“
روش تشخیص انواع Data type در کد
در جاوا اسکریپت، برای تشخیص نوع یک متغیر، از اپراتور typeof استفاده میشود. عملگر typeof در جاوا اسکریپت برای دریافت نوع داده یک متغیر استفاده میشود. این عملگر به برنامهنویس امکان میدهد نوع داده را تشخیص و براساس آن عملیات مناسب را انجام دهد. این عملگر به صورت زیر استفاده میشود:
typeof expression
در اینجا expression
متغیر یا مقداری است که میخواهید نوع داده آن را بدانید.
توجه: وقتی یک متغیر به مقدار null تنظیم شود (مثلاً ;const a = null)، typeof(a) نوع آن را به “object” برمیگرداند. این یک مشکل معروف در جاوا اسکریپت است که از زمان عرضه اولیه این زبان وجود دارد.
بیشتر بخوانید: “مروری بر عملگرها و عبارات در جاوا اسکریپت“
کلام آخر
در زبان جاوا اسکریپت، دیتاتایپها انواع مختلف داده است که برای مدیریت و پردازش اطلاعات در برنامهنویسی بسیار مهم هستند. دیتاتایپها به برنامهنویسان این امکان را میدهند تا دادهها را به صورت صحیح و مدیریتپذیر در برنامهها استفاده و از خطاهای ناشی از تداخل دادهها جلوگیری کنند.
در این مقاله سعی کردیم به معرفی انواع Data Type در زیان جاوا اسکریپت بپردازیم. طبیعتا نحوه استفاده دقیق این متغیرها و موارد کاربردشان در برنامههای واقعی نیازمند یادگیری دقیق و شرکت در دوره آموزش جاوا اسکریپت و تمرین و تکرار است.