در این بخش از سری آموزش جاوا اسکریپت درباره انواع داده های جاوا اسکریپت (data types) صحبت می کنیم.
نوع داده ها اساسا مشخص می کند که چه توع داده ای می تواند داخل برنامه ذخیره یا دستکاری شود.
شش نوع داده پایه در جاوا اسکریپت وجود دارد که به سه دسته بندی اصلی می توان تقسیم کرد: اولیه (primary), کامپوزیت (composite) و نوع داده خاص (special).
رشته,اعداد و بولین ها نوع داده اولیه هستند. آرایه و توابع (که انواع آبجکت ها هستند) نوع داده کامپوزیت هستد. Undefined
و null
نیز نوع داده خاص هستند.
نوع داده های اولیه می توانند یک مقدار را همزمان نگه دارند در حالی انواع داده کامپوزیت مجموعه ای از مقادیر و entity
های پیچیده تر را حفظ می کنند.
نوع داده رشته (String)
نوع داده string
برای نمایش داده های متنی (توالی کاراکترها) استفاده می شود. رشته ها با ‘
یا “
که اطراف یک یا چند کاراکتر هتسند ایجاد می شوند.
1 2 |
var a = 'Hi there!'; // using single quotes var b = "Hi there!"; // using double quotes |
شما می توانید از علامت نقل قول ‘ ها نیز تا جایی که باز و بسته شدن رشته را به هم نریزند درون رشته استفاده کنید.
1 2 3 |
var a = "Let's have a cup of coffee."; // single quote inside double quotes var b = 'He said "Hello" and left.'; // double quotes inside single quotes var c = 'We\'ll never give up.'; // escaping single quote with backslash |
درباره رشته ها در جاوا اسکریپت در بخش های بعدی بیشتر یاد می گیرید.
نوع داده عدد (Number)
نوع داده number
برای نمایش اعداد منفی و مثبت بصوت صحیح یا دهدهی یا با کاراکترهای عملیات ریاضی استفاده می شود.
1 2 3 4 |
var a = 25; // integer var b = 80.5; // floating-point number var c = 4.25e+6; // exponential notation, same as 4.25e6 or 4250000 var d = 4.25e-6; // exponential notation, same as 0.00000425 |
نوع داده عدد می تواند شامل مقادیر خاصی مثل Infinity
, -Infinity
و NaN
باشد.
Infinity نشان دهده بی نهایت ریاضی ∞
است که بزرگتر از هر عددی است. مقدار Infinity
نتیجه تقسیم یک عدد غیرصفر بر ۰
است :
1 2 3 |
alert(16 / 0); // Output: Infinity alert(-16 / 0); // Output: -Infinity alert(16 / -0); // Output: -Infinity |
در حالی که NaN
نشان دهنده مقدار خاص Not-a-Number (غیرعددی) است. این مقدار نتیجه یک عملیات ریاضی نامعتبر یا undefined
است.
1 2 3 |
alert("Some text" / 2); // Output: NaN alert("Some text" / 2 + 10); // Output: NaN alert(Math.sqrt(-1)); // Output: NaN |
درباره اعداد در جاوا اسکریپت در بخش های بعدی بیشتر یاد می گیرید.
نوع داده بولین (Boolean)
نوع داده Boolean
می تواند دو مقدار true
یا false
داشته باشد.
که معمولا برای ذخیره مقادیری مثل yes (true
) یا no (false
), on (true
) یا off (false
) غیره استفاده می شود.
1 2 |
var isReading = true; // yes, I'm reading var isSleeping = false; // no, I'm not sleeping |
مقادیر Boolean همچنین در نتیجه یک مقایسه نیز برگشت داده می شود. مثال زیر را ببینید.
1 2 3 4 |
var a = 2, b = 5, c = 10; alert(b > a) // Output: true alert(b > c) // Output: false |
درباره if/else در جاوا اسکریپت در بخش های بعدی بیشتر یاد می گیرید.
نوع داده تعریف نشده (Undefined)
نوع داده تعریف نشده فقط یک مقدار خاص undefined
را داراد. اگر یک متغییر را تعریف ولی مقدار دهی نکنید مقدار آن undefined
خواهد بود.
1 2 3 4 5 |
var a; var b = "Hello World!" alert(a) // Output: undefined alert(b) // Output: Hello World! |
نوع داده خالی (Null)
Null
به معنی اینکه هیچ مقداری ندارد. که به هیچ وجه معادل رشته خالی (“”
) یا ۰ نیست و به طور ساده یعنی هیچی.
1 2 3 4 5 6 7 8 |
var a = null; alert(a); // Output: null var b = "Hello World!" alert(b); // Output: Hello World! b = null; alert(b) // Output: null |
نوع داده شی (Object)
Object
یک نوع داده پیچیده است که به ما امکان ذخیره مجموعه ای از داده را می دهد.
یک آبجکت شامل خصوصیات, جفت کلید-مقدار است.
یک کلید (مثلا name) می تواند همیشه یک رشته است اما مقدار آن می تواند انواع داده رشته, اعداد, بولین ها یا داده هی پیچیده تری مثل آرایه ها, توابع یا دیگر آبجکت ها باشد.
آسان ترین راه برای ایجاد یک آبجکت در جاوا اسکریپت را می بینید :
1 2 3 4 5 6 7 8 9 |
var emptyObject = {}; var person = {"name": "Clark", "surname": "Kent", "age": "36"}; // For better reading var car = { "modal": "BMW X3", "color": "white", "doors": 5 } |
شما می توانید علامت های نقل قول دور نام خصوصیت ها را اگر یم نام معتبر جاواسکریپت است, حذف کنید.
به این معنی که به جای "modal"
می توانید فقط model
بنویسید.
1 2 3 4 5 |
var car = { modal: "BMW X3", color: "white", doors: 5 } |
درباره object در جاوا اسکریپت در بخش های بعدی بیشتر یاد می گیرید.
نوع داده آرایه Array
یک آرایه نوعی از آبجکت است که مقادیر چندگانه را در یک متغیر ذخیره می کند.
هر مقدار (که المان هم نامیده می شود) یک آرایه با موقعیت عددی است که به نام ایندکس index شناخته است و داده ها نیز ممکن است انواع عددی, رشته, بولین, توابع, آبجکت و حتی باز هم آرایه باشد.
ایندکس آرایه از ۰ شروع می شود پس اولین المان آرایه arr[0]
است نه arr[1]
آسان ترین راه برای ایجاد آرایه, مشخص کردن المان های آرایه داخل براکت مربعی که با کاما جدا شده اند.
1 2 3 4 5 |
var colors = ["Red", "Yellow", "Green", "Orange"]; var cities = ["London", "Paris", "New York"]; alert(colors[0]); // Output: Red alert(cities[2]); // Output: New York |
درباره آرایه ها در جاوا اسکریپت در بخش های بعدی بیشتر یاد می گیرید.
نوع داده تابع Function
Function
یک نوع شی قابل فراخوانی برای اجرای کدهای بلاک آن است. از آنجایی که توابع همان آبجکت ها است, امکان آن است که آن را به یک متغیر اختصاص بدیم :
1 2 3 4 5 6 7 |
var greeting = function(){ return "Hello World!"; } // Check the type of greeting variable alert(typeof greeting) // Output: function alert(greeting()); // Output: Hello World! |
درواقع, توابع هرجایی که مقداری می توانید قرار بدید, می توانند قرار بگیرند مثل متغیر, آبجکت و آرایه.
توابع می توانند به عنوان یک آرگومان تابع دیگر پاس داده شوند و توابع می توانند داخل توابع دیگر برگشت داده شوند (return
)
1 2 3 4 5 6 7 8 9 |
function createGreeting(name){ return "Hello, " + name; } function displayGreeting(greetingFunction, userName){ return greetingFunction(userName); } var result = displayGreeting(createGreeting, "Peter"); alert(result); // Output: Hello, Peter |
درباره توابع در جاوا اسکریپت در بخش های بعدی بیشتر یاد می گیرید.
اپراتور typeof
اپراتور typeof می تواند برای پیدا کردن نوع داده یک متغییر استفاده شود. که می تواند با یا بدون پارانتز استفاده شود (typeof(x)
یا typeof x
)
اپراتور typeof
می تواند در مواقع خاصی که نیاز به پردازش نوع مقادیر متفاوت استفاده کنید کاربرد دارد اما باید مواظب باشید چرا که ممکن است در بعضی مواقع نتایج غیرقابل پیش بینی ایجاد کند همانند مثال زیر :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
// Numbers typeof 15; // Returns: "number" typeof 42.7; // Returns: "number" typeof 2.5e-4; // Returns: "number" typeof Infinity; // Returns: "number" typeof NaN; // Returns: "number". Despite being "Not-A-Number" // Strings typeof ''; // Returns: "string" typeof 'hello'; // Returns: "string" typeof '12'; // Returns: "string". Number within quotes is typeof string // Booleans typeof true; // Returns: "boolean" typeof false; // Returns: "boolean" // Undefined typeof undefined; // Returns: "undefined" typeof undeclaredVariable; // Returns: "undefined" // Null typeof Null; // Returns: "object" // Objects typeof {name: "John", age: 18}; // Returns: "object" // Arrays typeof [1, 2, 4]; // Returns: "object" // Functions typeof function(){}; // Returns: "function" |
همانطور که در مثال بالا مشخص است زمانی که مقدار null
را با اپراتور typeof
تست می کنیم (خط۲۲), مقدار object
را به جای null
برگشت می دهد.
این یک باگ قدیمی در جاوا اسکریپت است اما از انجایی که بسیاری از کدهای وب حول همین رفتار نوشته شده بنابراین حل آن باعث ایجاد مشکلات زیادی می شود, بنابراین ایده حل این باگ توسط کمیته طراحی و توسعه جاوا اسکریپت رد شده است.
امیدوارم در این بخش آموزش جاوا اسکریپت, از انواع داده های جاوا اسکریپت نهایت استفاده را برده باشید.
در بخش بعدی با اپراتورها در جاوا اسکریپت آشنا می شوید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق باشید.