انواع داده در جاوا اسکریپت
در برنامه نویسی جاوا اسکریپت با گونه های مختلفی از داده ها سروکار داریم. نام شما، قیمت غذایی که سفارش داده اید، آدرس مطب دکتر، تاریخ تولدتان و … که برای شما مهم است. در واقع تمام تلاش شما به عنوان یک برنامهنویس تصمیم گیری در مورد چگونگی عمل کردن با این نوع داده هاست. چیزی که برنامههای کامپیوتری را از هم متمایز می کند دادهها و اطلاعات خروجی آنهاست. در درس قبلی در مورد متغیرها در جاوا اسکریپت بحث کردیم. در این درس به انواع داده در جاوا اسکریپت می پردازیم.
مقدمهای بر نوع داده در جاوا اسکریپت
ما از انواع داده های مختلفی در برنامه نویسی استفاده می کنیم، برای مثال برای محاسبه جمع سبد خرید یک مشتری برنامه به داده هایی مانند قیمت واحد و تعداد هر جنس در سبد نیاز دارد یا در یک صفحه وب برای نمایش پیغام خوشامدگویی به کاربر نیاز به داشتن اسم او داریم. به طور معمول زبان های برنامه نویسی داده ها را در انواع داده های مختلف دسته بندی می کنند، و با هر نوع داده به گونه ای متفاوت برخورد میشود. در زبان برنامهنویسی جاوا اسکریپت با سه نوع داده اصلی عددی(number)، رشته ای(string) و boolean سروکار داریم که در ادامه با آنها بیشتر آشنا خواهید شد.
در جاوا اسکریپت هشت نوع داده پایه داریم که در این درس در مورد همه آنها به صورت کلی بحث خواهیم کرد و در درسهای بعدی به جزئیات هرکدام خواهیم پرداخت.
نکته مهم: برخلاف بیشتر زبانهای برنامه نویسی که نوع متغیر باید از قبل مشخص شده باشد در جاوا اسکریپت نیازی به این کار نیست و با مقدار دهی متغیر نوع آن مشخص خواهد شد جالبتر اینکه شما میتوانید مانند کد زیر به متغیری که قبلا مقدار رشتهای داشته یک مقدار عددی نسبت دهید.
// no error let message = "hello"; message = 123456;
به این قابلیت در زبانهای برنامهنویسی dynamically typed میگویند، بدین معنی که انواع داده مختلف وجود دارد ولی متغیرها به نوع داده وابسته نیستند.
نوع داده عددی (number)
let n = 123; n = 12.345;
از نوع داده number برای شمردن و محاسبه استفاده می کنیم مثلا از داده عددی برای شمردن تعداد کاربران بازدید کننده سایت و یا برای محاسبه مجموع مدت زمان ماندگاری آنها در صفحه استفاده می کنیم. نوع داده عددی در جاوا اسکریپت بسیار مهم و کاربردی است. در javascript برای نمایش نوع داده number از کارکترهای عددی استفاده می کنیم، برای مثال کاراکتر “5” عدد پنج را نمایش می دهد. همچنین می توانید از اعداد اعشاری مانند 5.25 یا 10.3333333 استفاده کنید. و به همان سادگی نیز می توانید از اعداد منفی مانند 30- یا 459.67- استفاده کنید.
به علت استفاده مکرر برنامه شما از نوع داده عددی و محاسبات آن غالب برنامه های شما شامل عملگر (operator) های محاسباتی نیز می شود که در درس های آینده در مورد آنها بیشتر خواهیم خواند. برای نوع داده عددی عملگرهای زیادی وجود دارد، برای درک بهتر مثال ساده جاوا اسکریپت زیر را در نظر بگیرید، در این مثال قصد داریم مجموع دو عدد 5 و 15 را در صفحه نمایش نشان دهیم، برای این کار کد زیر را امتحان کنید.
document.write(5 + 15);
این تکه کد کوچک دو عدد را با هم جمع کرده (20) و آن را در صفحه وب نمایش می دهد.در javascript کارهای زیادی هست که می توان با نوع داده ی عددی انجام داد که به زودی به تفصیل در مورد آنها بحث خواهیم کرد.
علاوه بر مقادیر عددی معمول شما میتوانید مقادیر ویژهای نیز در نوع داده عددی درج کنیدInfinity
، -Infinity
و NaN
.
alert( 1 / 0 ); // Infinity alert( Infinity ); // Infinity
alert( "not a number" / 2 ); // NaN, such division is erroneous alert( NaN + 1 ); // NaN alert( 3 * NaN ); // NaN alert( "not a number" / 2 - 1 ); // NaN
عملیاتهای ریاضی در جاوا اسکریپت safe هستند
در انجام عملیاتهای ریاضی در جاوا اسکریپت نگران اتفاق افتادن خطاهای بحرانی ناشی از تقسیم بر صفر و یا یک مقدار غیر عددی نباشید، جاوا اسکریپت برای جلوگیری از رخ دادن خطای بحرانی و کراش برنامه کلیمه عملیاتهای ریاضی را به صورت Safe (مطمئن) اجرا میکند.
اگر شما یک عملیات تقسیم بر صفر را در زبانهایی مانند C انجام دهید به محض انجام عملیات برنامه به اصطلاح Die میشود، اما در جاوا اسکریپت خروجی چنین عملیاتی مقدار NaN
خواهد بود.
در درس اعداد به تفصیل در مورد اعداد و شیوههای مختلف نمایش و بهکارگیری آنها بحث خواهیم کرد.
نوع داده BigInt
نوع داده رشته ای یا string
برای نمایش نام، جمله و یا هر مجموعه ای از حروف از نوع داده رشته ای استفاده می کنیم، یک رشته (string
) فقط مجموعه ای از کاراکترهاست (شامل حروف و نمادها) که توسط تو کوتیشن محصور شده اند. برای مثال 'Welcome Mohammad'
و 'you are hear'
هر دو دو مثال برای string
هستند. ما درس های قبلی از نوع داده رشته ای در تابع alert ('Hello World!')
استفاده کردیم.
let str = "Hello"; let str2 = 'Single quotes are ok too'; let phrase = `can embed another ${str}`;
علامت کوتیشن باز به مفسر javascript می گوید که آنچه به دنبال کوتیشن قرار دارد صرفا رشته ای از نمادها و حروف است ومفسر با انها مانند حرف ونماد عادی برخورد می کند و در آنها به دنبال یافتن دستورات و گرامر جاوا اسکریپت نیست. و هنگامی که مفسر به کوتیشن آخر یا همان کوتیشن بسته می رسد، متوجه می شود که به انتهای رشته رسیده و دستورات عادی برنامه از سرگرفته می شوند.
در جاوا اسکریپت سه کاراکتر مختلف برای تعیین ابتدا و انتهای رشته وجود دارد.
کوتیشن و دابل کوتیشن
علاوه بر کوتیشن ('hello world'
) می توانید از علامت دابل کوتیشن ("hello world"
) هم برای معرفی نوع داده رشته ای استفاده کنید، تنها نکته ای که باید رعایت کنید این است که باید در ابتدا و انتهای رشته از یک کدام از آنها استفاده کنید. برای مثال عبارت "this is not right'
بخاطر استفاده از هر دو علامت اشتباه است. بنابراین برای نمایش یک پیغام حاوی متن هشدار، هم می توانید از alert('Warning');
و هم از alert("Warning");
استفاده کنید. در برنامه نویسی به کرات از نوع داده string
استفاده می کنیم مثلا وقتی که می خواهید یک پیغام را به کاربر نمایش دهید و یا وقتی که کاربر فرمی را پر می کند و … در ادامه دروس با نوع داده رشته ای بیشتر آشنا خواهیم شد
چگونه در رشته ها از خود کوتیشن استفاده کنیم ؟
در جاوا اسکریپت هرکجا از علامت کوتیشن استفاده کنید مفسر آن را به عنوان ابتدای رشته در نظر خواهد گرفت حتی اگر شما چنین قصدی نداشته باشید، برای مثال رشته "He said "Hello""
را در نظر بگیرید این رشته حاوه جمله He said "Hello"
است یعنی جمله خود شامل کوتیشن است در این حالت مفسر با رسیدن به اولین کوتیشن شروع جمله را تعیین و با رسید به کوتیشن داخل پایان جمله را مشخص می کند و چون بعد از آن دستورات صحیح جاوا وجود ندارد برنامه با خطا مواجه می شود.
برای حل این مشکل چندین روش وجود دارد، یکی از ساده ترین روش ها استفاده از تک کوتیشن برای مشخص کردن string
و استفاده از دابل کوتیشن برای داخل رشته به صورت , 'He said, "Hello."'
است. در این حالت کوتیشن نمایانگر رشته و دابل کوتیشن جزئی از رشته است. به همین منوال می توانید بر عکس این عمل را نیز با قرار دادن دابل کوتیشن برای مشخص کردن رشته و کوتیشن برای عبارت متنی به صورت "This isn't fair"
انجام دهید
روش دیگری که برای اینکار وجود دارد استفاده از escape character یا کاراکتر گریز است، اگر شما قبل از علامت کوتیشن یک بک اسلاش (\) مانند عبارت "He said, \"Hello.\""
قرار دهید مفسر به صورت خودکار کوتیکشن هایی را که بعد از بک اسلاش آمده است به صورت رشته در نظر خواهد گرفت.
Backticks در رشتهها
کوتیشن و دابل کوتیشن برای تعیین رشته ها استفاده میشوند و تفاوتی با هم ندارند، اما Backticks برای گسترش کاربرد گیومه در جاوا اسکریپت طراحی شدهاند.
با استفاده از Backticks میتوانید در رشتهها از متغیرها و عبارات نیز استفاده کنید برای اینکار کافی است عبارت را در ${…}
بین Backticks قرار دهید.
let name = "John"; // embed a variable alert( `Hello, ${name}!` ); // Hello, John! // embed an expression alert( `the result is ${1 + 2}` ); // the result is 3
عباراتی که در بین ${…}
قرار میگیرد اجرا و نتیجه آن در بین رشته قرار میگیرد. در مثال بالا خروجی دستور اول Hello, John
و خروجی دستور دوم جمع دو عدد 1+2 است.
البته توجه کنید اگر از کوتیشن و یا دابل کوتیشن استفاده کنید عبارت نادیده گرفته خواهد شد. به مثال زیر توجه کنید:
alert( "the result is ${1 + 2}" ); // the result is ${1 + 2} (double quotes do nothing)
خروجی دستور بالا the result is ${1 + 2}
خواهد بود.
در ادامه به وضوح در مورد رشتهها بحث خواهیم کرد.
نوع داده بولی Boolean
انواع داده ی رشته ای و عددی می توانند تقریبا هر داده ای را برای ما ذخیره کنند اما بعضی وقتها ما داده هایی داریم که فقط دو حالت دارند مانند درست و غلت، خاموش و روش و یا قفل بودن و باز بودن. نوع دادی بولی راه حلی برای این گونه داده هاست.
Booblean یکی از دو حالت true یا false را به عنوان داده می پذیرد، ما از داده بولی در برنامه نویسی جاوا اسکریپت استفاده زیادی می کنیم. برای مثال در یک صفحه وب برای اطمینان از اینکه کاربر ادرس ایمیل را وارد کرده است باید کنترل کنیم که آیا کاربر ایمیل صحیح وارد کرده است؟ پاسخ این سوال دو حالت دارد بله یا خیر و بر اساس پاسخ واکنش مناسبی نشان می دهیم.
let nameFieldChecked = true; // yes, name field is checked let ageFieldChecked = false; // no, age field is not checked
همچنین از مقدار بولی برای بررسی صحت در دستورات شرطی استفاده میکنیم:
let isGreater = 4 > 1; alert( isGreater ); // true (the comparison result is "yes")
جاوا اسکریپت مقادیر boolean را به دو صورت true به معنی درست و false به معنی غلط به کار می برد، در ادامه در مباحث مختلفی با این نوع داده سرو کار داریم و بیشتر با آن آشنا خواهیم شد.
مقدار “null”
مقدار “undefined”
اشیاء و نمادها
عملگر typeof
خلاصه درس انواع داده:
تمرینهای درس:
سوالات متداول
چگونه در رشته ها از خود کوتیشن استفاده کنیم ؟
برای حل این سؤال 2 روش وجود دارد یکی استفاده از دابل کوتیشن در میان تک کوتیشن و یا برعکس و روش دوم استفاده از کاراکتر گریز بک اسلاش است
7 نوع داده در جاوا اسکریپت چیست؟
7 نوع داده اولیه در جاوا اسکریپت وجود دارد: رشته، عدد، bigint، بولی، تهی، تعریف نشده و نماد.
انواع داده به چه معناست؟
نوع داده، طبقهبندی دادهها است که به کامپایلر یا مفسر میگوید برنامهنویس چگونه قصد استفاده از دادهها را دارد. بیشتر زبان های برنامه نویسی انواع مختلفی از داده ها از جمله عدد صحیح، واقعی، کاراکتر یا رشته ای و بولی را پشتیبانی می کنند.
آیا تابع جاوا اسکریپت یک نوع داده است؟
جاوا اسکریپت نوع داده تابعی ندارد اما وقتی نوع داده یک تابع را با استفاده از عملگر typeof ایجاد می کنیم، متوجه می شویم که یک تابع را برمی گرداند. این به این دلیل است که یک تابع یک شی در جاوا اسکریپت است.