انواع داده (Data types) در JS

زبان JavaScript دارای 8 نوع داده (data type) مختلف است.

  • رشته - String
  • عدد - Number
  • عدد بزرگ - Bigint
  • بولین - Boolean
  • تعریف نشده - Undefined
  • شیء نال - Null Object
  • شیء آرایه - Array Object
  • شیء - Object
  • نماد - Symbol

نکته: در JS، نوع داده نال و آرایه وجود ندارد. در واقع هر دو، نوعی Object هستند.

مفهوم انواع داده در JS

در هر زبان برنامه نویسی مسلط بودن و درک تفاوت های انواع داده ها یک امر ضروری است.

  • در جاوا اسکریپت هر نوع داده دارای متدها (methods) و ویژگی های (properties) منحصر به فرد، آن نوع داده است.
  • همینطور بر اساس نوع داده امکان دارد ماهیت عملگرهای ریاضی نیز تغییر کند.
console.log("PNL" + "dev") // PNLdev
console.log(2 + 3) // 5

در خط 1 نمونه کد، عملگر +، دو رشته (string) را به هم چسبانده (concate) است.

در خط 2 نمونه کد، عملگر +، دو عدد (number) را با هم جمع حسابی کرده است.

نکته: همانطور که مشاهده کردید، ماهیت + با تفاوت نوع داده، تغییر کرد.

رشته (String) در JS

یک رشته (string) مجموعه ای از کارکترها (عدد، حروف، علامت ها و ...) است.

در واقع هرچه بین کوتیشن (نقل قول) قرار بگیرد، یک رشته است. مانند: "hi world" یا 'hi world'.

نکته: رشته ها بین کوتیشن ' '  یا دبل کوتیشن " "  قرار می گیرند.

let name = "احسان";
let family = 'اسلامی';
name + " " + family; 

عدد (number) در JS

اعداد در js می توانند با اعشار یا بدون اعشار (عدد صحیح) ذخیره شوند.

برای قرار دادن اعداد درون متغیر، شما می توانید بدون ممیز یا با ممیز، عددی را وارد کنید.

let x = 10.00;
let y = 10;
let z = 10.10;

عدد بزرگ (Bigint) در JS

bigint یک نوع داده عددی برای اعداد بزرگ است.

همه ی اعداد در js در قالب ممیز 64 بیتی ذخیره می شوند اما bigint قابلیت ذخیره و نمایش بیش از 64 بیت را دارد.

برای ساخت BigInt دو راه وجود دارد:

  1. از تابع سراسری ()BigInt استفاده کنیم.
  2. در انتهای عدد از کارکتر n استفاده کنیم.
let x = BigInt("11001001001001101011010100010");

بولین (Boolean) در JS

بولین ها (booleans) فقط شامل دو مقدار true (صحیح) یا false (غلط) هستند.

همیشه نتیجه مقایسه یک بولین است.

نکته: علامت های مقایسه مانند ==، !=، >، <، >=، <= هستند که جواب آن ها همیشه یک bool است.

let x = 5;
let y = 5;
let z = 6;
x == y; // true
x == z; // false

تعریف نشده (Undefined) در JS

undefined به معنی تعریف نشده است و مقدار آن تهی است.

وقتی یک متغیری تعریف می شود و به آن مقداردهی نمی شود. مقدار آن undefined می شود.

let age; // let age = undefined;

let age = 30;
age = undefined // undefined

وقتی نوع متغیری undefined گذاشته می شود، مقدار آن نیز undefined می شود.

نکته: مقدار undefined برابر با تهی است. تهی با یک رشته خالی یا 0 برابر نیست.

'' == undefined; // false
0 == undefined; // false

نکته: بهتر است مقدار undefined را به متغیر ندهید، خطا نمی دهد ولی اصولی نیست.

نال (Null) در JS

null یا نال، تهی است.

 مقدار null هم دقیقاً مانند undefined به معنی هیچ مقداری یا تهی است. اما  این دو نوع داده کاملاً با هم متفاوت هستند.

بهتر است برای تهی کردن یک متغیر به جای undefined از null استفاده شود.

معمولا از undefined برای متغیر تازه تعریف شده که هیچ مقداری دریافت نکرده اند، استفاده می شود.

نکته: در JS، نوع داده null وجود ندارد. در واقع null، نوعی Object است.

let age = 30;
age = null // null

وقتی نوع متغیری null گذاشته می شود، مقدار آن نیز null می شود.

نکته: مقدار null برابر با تهی است.

نکته: null با undefined هر دو تهی هستند و با هم برابرند.

نکته: بهتر است برای تهی کردن یک متغیر به جای undefined از null استفاده شود. از undefined اصولا استفاده نمی شود و صرفا متغیرهایی که مقداردهی نشده اند، به صورت پیشفرض undefined در نظر گرفته می شوند.

آرایه (Array) در JS

آرایه (array) مجموعه ای از متغیرها و مقادیر است. در آرایه می توان انواع مختلف داده را ذخیره کرد.

آرایه ها در JS درون براکت  [ ] نوشته می شوند.

const array = ["hi world"];

و آیتم ها با کاما (,) از هم جدا می شوند. به هر آیتم یا خانه آرایه اصطلاحا یک المان آرایه گفته می شود.

const array = ["hi", "world"];

همانطور که در نمونه کد بالا دیدید، یک مجموعه به نام array شامل دو مقدار رشته ای (hi - world) است.

هر خانه آرایه یک شماره دارد که به آن ایندکس index گفته می شود.

ایندکس ها از 0 شروع می شوند. در نمونه کد بالا خانه اول (hi) ایندکس 0 است. خانه دوم (world) ایندکس 1 است.

برای فراخوانی هر خانه ی آرایه، باید از شماره ایندکس آن استفاده کرد.

const array = ["hi", "world"];
console.log(array[0]); // hi چاپ می شود
console.log(array[1]); // world چاپ می شود

const cars = ["BENZ", "BMW"];
document.getElementById("demo").innerHTML = cars[0];

نکته: در JS، نوع داده آرایه وجود ندارد. در واقع آرایه، نوعی Object است.

شئ (Object) در JS

اشیاء یا object در js با براکت مجعد - { } - curly brace نوشته می شوند.

یک شی JS از ویژگی ها (property) و متدهای (method) مختلف تشکیل شده است.

ویژگی های یک شی جاوا اسکریپتی به صورت name: value نوشته می شود.

const obj = {
    name: 'ehsan'
};

ویژگی های یک شی جاوا اسکریپتی با کاما , از هم جدا می شوند.

const obj = {
    name: 'ehsan',
    family: 'eslami',
    age: 31
};

برای فراخوانی مقدار یک ویژگی آبجکت می توانیم مانند آرایه آن را فراخوانی کنیم.

const obj = {
    name: 'ehsan',
    family: 'eslami',
    age: 31
};
console.log(obj['age']); // 31
console.log(obj.age); // 31

 

نکته: همانطور که در نمونه کد بالا در خط 7 مشاهده کردید، از نقطه برای فراخوانی مقدار ویژگی نیز استفاده می شود.

نکته: به ساختار نام = مقدار (name:value) ساختار جفتی (assocative) گفته می شود.

 

 

مقایسه ابجکت و آرایه جاوا اسکریپت:

Object Array
براکت مجعد { } براکت - [ ]
ایندکس غیر عددی ایندکس عددی

 

موارد زیر object یا (شیء) جاوا اسکریپتی هستند:

  • شیء عادی
  • شیء آرایه
  • شیء نال
  • شیء تاریخ (Date) و ...

در نمونه کد زیر چند نوع مختلف object نوشته شده است.

// Object:
const person = {
    name:"ehsan",
    family:"eslami"
};

// Array object:
const students = ["ehsan", "mahshid", "mona"];

// Null object:
const users = null;

// Date object:
const date = new Date("2024-04-24");

 

const person = {
  name: "احسان",
  family: "اسلامی",
  age: 31,
};

نوع داده در JS بسیار منعطف است

در JS برخلاف زبان های دیگر، می توان با مقداردهی نوع داده جدید، نوع قبلی داده را تغییر داد.

let x; // x => Undefined
x = 2;  // x => Number
x = "hi"; // x => String

در نمونه کد بالا:

  • در خط 1 متغیر دارای نوع undefined و مقدار undefined است.
  • در خط 2 متغیر دارای نوع number و مقدار 2 است.
  • در خط 3 متغیر دارای نوع string و مقدار hi است.

متغیر های ابتدایی (Primitive Variable) در JS

در JS متغیرها به دو دسته متغیر ابتدایی و متغیر ارجاعی تقسیم می شوند.

متغیرهایی که از نوع string، number، bigint، boolean، symbol، null، undefined هستند، متغیرهای ابتدایی نامیده می شوند.

نکته: به زبان دیگر هر متغیری که توانایی ذخیره چند متغیر را به صورت همزمان نداشته باشد، متغیر ابتدایی نامیده می شود.

متغیر هایی که از نوع array و object هستند، متغیر ارجاعی یا شیء نامیده می شوند.

نکته: در JS می توان متغیرهای ابتدایی (مانند رشته و ...) را به صورت شیء هم تعریف کرد، ولی اکیدا توصیه می شود این کار را نکنید.

عملگر typeof در JS

عملگر typeof، نوع داده را برمی‌گرداند.

typeof "Ehsan"; // string
typeof 3.14; // number
typeof 33; // number
typeof true; // boolean
typeof "false"; // string
typeof undefined; // undefined
typeof BigInt("13"); // bigint
typeof [];  // object
typeof null;  // object
typeof {};  // object

نکته: برای تشخیص آرایه و نال و شیء از همدیگر، از عملگر instanceof استفاده می کنیم.

 نکته: در جاوااسکریپت، null یک مقدار ابتدایی است. با این حال، typeof برای آن object برمی‌گرداند. این یک باگ معروف در جاوااسکریپت است.

عملگر instanceof در JS

عملگر instanceof، در جاوا اسکریپت برای بررسی نوع یک شیء است.

 

نکته: زمانی که از typeof برای بررسی آرایه، نال و شیء استفاده می کنیم، مقدار object برگردانده می شود. برای تشخیص این سه نوع داده باید از instanceof استفاده کنیم.

[] instanceof Array;  // true
{} instanceof Object;  // true

خلاصه درس

  • در این فصل با انواع داده ها در JS آشنا شدیم و برای هر کدام مثالی ساده را برسی کردیم 
  • در فصل های آینده با انواع داده ها بیشتر آشنا می شوید.
  • string
  • number
  • bigint
  • boolean
  • null
  • symbol
  • object
  • Undefined

توسعه دهندگان
احسان اسلامی