آموزش جاوا اسکریپت

آموزش جاوااسکریپت – جلسه دوم: انواع داده و متغیرها در جاوااسکریپت

فهرست مطالب:

یک خبر خوب!

در مبحث متغیرها در جاوااسکریپت خبری از int و String و double و این چیزا نیست!

ما همه متغیر ها در جاوااسکریپت رو به صورت var تعریف می کنیم. (البته در جاوااسکریپت ورژن ES6 به بعد، دو مدل متغیر به نام های let و const هم داریم که در ادامه این مطلب اونها رو هم توضیح دادم)

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

مثال زیر رو ببینید:

var number = 12; 
var pi = 3.14;
var name = "asghar";

اگر تازه اومدین سراغ جاوااسکریپت، حتما جلسه اول این مجموعه رو هم یه نگاه بندازید: آموزش جاوااسکریپت – جلسه اول: شروع کار با جاوااسکریپت

تعریف متغیرها در جاوااسکریپت

متغیرها در جاوااسکریپت با کلیدواژه var تعریف میشن. و میتونن همونجا بعد از تعریف مقداردهی هم بشن. (تکه کد قبلی رو ببینید)

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

var car;
console.log(car);
-> undefined

متغیری که تعریف شده ولی مقداردهی نشده رو بعداً میتونیم مقداردهی کنیم :

var car;
car = "tiba2";
console.log(car);
-> tiba2

تعریف متغیر ها به صورت فله ای! (با استفاده از یک کلمه var)

شما میتونید برای اینکه دستای خوشگلتون خسته نشن، و البته سیصد خط سینتکس اضافی وارد برنامه تون نکنید، متغیرهاتون رو به صورت فله ای تعریف کنید.

یدونه کلیدواژه var باید بذارید، بعدش متغیر ها رو تعریف کنید و بین متغیرها کاما (ویرگول) بذارید. آخر خط هم که یادتون می مونه سیمیکلن بذارید دیگه.

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

var name = "hamed", age = "33", carName = "mercedes benz bus", salary = 400;

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

اگر جور دیگه ای بخواید خط رو بشکونید، بهتون خطا میده و حالتونو می گیره.

var name = "hamed", 
age = "33", 
carName = "mercedes benz bus", 
salary = 400;

قوانین نامگذاری متغیرها در جاوااسکریپت

  • متغیرها باید نام یکتا داشته باشند. یعنی نمی شود دو متغیر همنام داشت.
  • نام متغیرها میتواند شامل حروف انگلیسی، اعداد، کاراکتر آندرلاین( ـ ) و کاراکتر دلار ( $ ) باشد.
  • نام متغیرها نمیتواند با عدد شروع شود. ولی شروع آنها با کاراکتر آندرلاین( ـ ) و کاراکتر دلار ( $ ) منعی ندارد.
  • نباید از کلمات رزرو شده بعنوان نام متغیرها استفاده کرد. (کلمات رزورشده کلماتی هستند که در جاوااسکریپت معنای خاصی دارند. مثل var و int و new و غیره. جدول کلمات رزرو شده جاوااسکریپت را در اینجا می توانید ببینید: جدول کلمات رزور شده جاوااسکریپت

انواع داده (به انگلیسی: Data Types) در جاوااسکریپت

نوع اولیه(Primitive Type) و نوع غیر اولیه (به انگلیسی: Non Primitive Type) در جاوااسکریپت

در خیلی از زبانهای برنامه نوبسی (مثل زبان جاوا) ما دو مدل نوع داده داریم : نوع اولیه(Primitive Type) و نوع مرجع (Reference Type)

در جاوااسکریپت هم ما یک چیزی شبیه این رو داریم. اما تفاوتهایی داره. مثلا نوع string (بر خلاف اکثر زبانها) در جاوااسکریپت از نوع اولیه محسوب میشه. و اینکه int و double و float و این چیزا نداریم. و همه متغیرهای عددی در جاوااسکریپت از نوع number محسوب میشن.

و Object و Array و RegExp نوع غیر اولیه (به انگلیسی: Non Primitive Type) محسوب میشن. این عبارت “نوع غیر اولیه” رو میتونید معادل نوع مرجع (به انگلیسی: Reference Type) در نظر بگیرید.

حالا تفاوت نوع اولیه و نوع مرجع چیه ؟

نوع اولیه: در این نوع دیتا، خود مقدار داده، داخل متغیر ریخته میشود.

نوع مرجع: در این نوع دیتا، آدرس محل نگهداری داده (در حافظه) داخل متغیر ریخته می شود.

انواع داده اولیه (به انگلیسی: Primitive Data Type) در جاوااسکریپت

در جدول زیر، انواع داده اولیه در جاوااسکریپت رو مشاهده می فرمایید:

تعریف و توضیحاتنوع داده (data type)
نوع داده متنی حروف و کاراکترهاstring
نوع داده عددی (عدد ساده و اعشاری)number
نوع true و falseboolean
یعنی متغیر تعریف نشده undefined
یعنی متغیر خالی null

انواع داده غیر اولیه (Non Primitive Type) در جاوااسکریپت

در جدول زیر، انواع داده غیر اولیه در جاوااسکریپت رو مشاهده می فرمایید:

تعریف و توضیحاتنوع داده (data type)
نوع شئ جاوااسکریپت Object
آرایه در جاوااسکریپتArray
عبارت منظم (regular expression)RegExp

متد typeof در جاوااسکریپت برای تشخیص نوع داده متغیرها

در جاوااسکریپت یک متد به نام typeof هست، که وقتی یک متغیر را بعنوان آرگومان به آن می دهیم، نوع متغیر را به صورت یک string به ما بر می گرداند. یعنی نوع خروجی این متد، یک string است:

var x = 2;
var dataType = typeof(x);
console.log(dataType);
-> number

تحلیل کد بالا:

  • خط اول: عدد 2 را داخل متغیر x ریختیم.
  • خط دوم: متغیر x را بعنوان آرگومان ورودی به متد typeof پاس دادیم. سپس مقدار خروجی این متد را داخل متغیر dataType ریختیم.
  • خط سوم: مقدار داخل متغیر dataType را به صورت لاگ کنسول نمایش دادیم .
  • خروجی : number

ما در برنامه بالا توانستیم با استفاده از متد typeof نوع داده یک متغیر را مشخص کنیم.

اگر بجای مقدار عدد 2، یک رشته (مثلا “salam”) را داخل متغیر x می ریختیم، خروجی برنامه string میشد.

نوع داده string در جاوااسکریپت

وقتی یک رشته کاراکتر داخل یک متغیر بریزیم، نوع متغیر تبدیل به string می شود. برای اینکه به جاوااسکریپت بفهمانیم که یک داده را به عنوان string بشناسد، باید آن را داخل دابل-کوتیشن(“) یا سینگل-کوتیشن (‘) قرار بدهیم:

var s1 = "salam";
var s2 = " ";
var s3 = "";
var s4 = "25"
var s5 = 'salam'

نوع داده تمام متغیرهای بالا از نوع string است.

نوع داده number در جاوااسکریپت

هر نوع داده عددی در جاوااسکریپت از نوع number به حساب می آید.

ما در جاوااسکریپت چیزی به نام int و double و float و long نداریم. بلکه هر مدل عددی داشته باشیم، نوع داده آن number محسوب میشود:

var n1 = 2;
var n2 = 120000;
var n3 = 3.14 ;
var n4 = 3.141592;

نوع داده تمام متغیرهای بالا number است.

نوع داده boolean در جاوااسکریپت

نوع داده بولی (به انگلیسی: boolean) یک نوع داده است که مقادیر راست یا غلط میگیرد.

متغیر بولین فقط می تواند مقدار true و یا false را در خودش ذخیره کند.

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

var bool1 = true;
var bool2 = false;

نوع داده undefined در جاوااسکریپت

اگر یک متغیر اصلا تعریف نشده باشد، یا تعریف شده باشد اما مقداردهی نشده باشد، نوع آن از نوع undefined خواهد بود.

var a;
console.log(typeof(a));
-> undefined
console.log(typeof(b));
-> undefined


  • خط اول: متغیر a را تعریف کرده ولی مقداردهی نکرده ایم.
  • خط دوم: نوع متغیر را به صورت undefined به ما بر می گرداند
  • خط سوم: متغیر b را اصلا تعریف نکرده ایم. نوع داده این را هم undefined بر می گرداند.

نوع داده null در جاوااسکریپت

وجود ندارد!

در واقع همیشه null را یکی از انواع داده در جاوااسکریپت به حساب می آورند. اما هیچ نوع داده ای به نام null در جاوااسکریپت وجود ندارد.

در حقیقت مقدار null وجود دارد. و متغیری که مقدارش null باشد، نوع داده اش از نوع object خواهد بود.

چرا نوع داده متغیری که مقدارش null است از نوع object است؟

دلیل object بودن null این است که null در برنامه نویسی به معنای “خالی” نیست. بلکه null فقط در مورد متغیرهای نوع مرجع به کار میرود و به معنای “فاقد آدرس” است.

وقتی در یک متغیر نوع مرجع، چیزی وجود ندارد، یعنی آدرسی برای دیتا وجود ندارد، در این حالت مقدار متغیر برابر با null میشود. پس null اصولاً به یک متغیر خالی از نوع مرجع اشاره می کند.

و به دلیل اینکه تمام متغیرهای نوع مرجع، یک object هستند، متغیر حاوی null هم object هست.

به مکالمه من و کنسول کروم در این رابطه توجه بفرمایید:

var x = 2;
console.log(x);
 -> 2
x = null;
console.log(x);
 -> null
console.log(typeof(x));
 -> object

تفاوت null و undefined

هر دوی داده های null و undefined به معنای “خالی” هستند. نفاوت آنها این است که نوع داده یک متغیر undefined از نوع داده undefined بوده، ولی نوع داده یک متغیر null از نوع داده object است.

در حقیقت مقدار undefined یعنی یک نوع اولیه خالی ولی مقدار null یعنی یک نوع مرجع خالی.

نوع داده object در جاوااسکریپت

نوع داده object در جاوااسکریپت بین دو آکولاد قرار می گیره.

این نوع داده از پراپرتی تشکیل شده.

هر پراپرتی به صورت زوج های نام-مقدار تعریف می شود. نام و مقدار با دونقطه ( : ) از هم جدا شده و مقدار داخل دابل-کوتیشن قرار می گیرد. خود پراپرتی ها با کاما (ویرگول) از هم جدا می شوند.

var person = {firstName:"hamed", lastName:"askarian", age:33, eyeColor:"brown"};

نوع داده array در جاوااسکریپت

آرایه ها یک جور متغیر هستن که یک مجموعه از متغیرهای همنوع رو داخل خودشون نگه میدارن.

مثلا یه آرایه میتونه تعدادی string داخل خودش نگه داره. یا یه آرایه دیگه میتونه تعدادی number داخل خودش نگه داره.

آرایه ها هم در جاوااسکریپت با کلیدواژه var تعریف میشن و فقط فرقشون با بقیه متغیرها اینه که مقادیرشون داخل یک جفت براکت قرار می گیره.

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

var arr01 = [3,4,5,6,12,18,24];
var arr02 = ["hamed", "mahmood", "ali", "gholi"];

هر کدوم از اعضای آرایه ها در جاوااسکریپت، یک شماره دارن (آدرسشونه). که این شماره بر اساس ترتیب قرارگیری اعضا داخل آرایه بهشون اختصاص پیدا می کنه. به این شماره که آدرس هر عضو در آرایه رو مشخص میکنه، اندیس (به انگلیسی: index) میگن.

نکته مهم: ‌اندیس اعضای آرایه از شماره صفر شروع میشه. یعنی اولین عضو آرایه، اندیسش [0] هست و دومی اندیسش [1] هست و الی آخر.

ما به هر کدوم از اعضای آرایه که بخوایم دسترسی داشته باشیم، اسم متغیر آرایه رو به همراه اندیس عضو مورد نظرمون می نویسیم. اینشکلی :

varName [index]

var arr02 = ["hamed", "mahmood", "ali", "gholi"];
console.log(arr02[0]);
-> hamed

در کد بالا، اون arr02 [0] معنیش این میشه: عضوی که در آرایه arr02 اندیس شماره صفر رو داره.

تعریف آرایه با استفاده از کلیدواژه new و Array

آرایه ها رو اینجوری هم میشه تعریف کرد:‌

دقت کنید که این جوری بجای آکولاد از پرانتز استفاده میشه.

var arr = new Array("hamed", "mahmood", "ali", "gholi");

شکستن خط در تعریف آرایه ها

در تعریف آرایه ها هم (مثل تعریف فله ای متغیر ها) میشه از دراز شدن بیش از حد خط جلو گیری کرد. برای این کار، مقادیر داخل آرایه رو از بعد از کاما، به خط بعد منتقل می کنیم:

var arr = new Array("hamed", 
"mahmood", 
"ali", 
"gholi");

نوع داده RegExp در جاوااسکریپت

این نوع داده رو در درس مربوط به خودش براتون توضیح دادم اینجا رو ببینید.

تغییر نوع داده یک متغیر در جاوااسکریپت

در جاوااسکریپت، با تغییر داده ی داخل یک متغیر، نوع داده اون متغیر هم تغییر می کنه. مثلا اگر شما یک داده از نوع number دارید و یک رشته string داخلش بریزید، نوعش تغییر می کنه و میشه string .

var x = 2;
console.log(typeof(x));
-> number
x= "salam";
console.log(typeof(x));
-> string
برچسب ها

حامد عسکریان

برنامه نویس و عاشق تکنولوژی

دیدگاهتان را بنویسید

دکمه بازگشت به بالا
بستن
بستن