جاوا اسکریپت مقدماتی: آشنایی با const، var و انواع داده ها

در جلسه گذشته در رابطه با کنسول ابزار توسعه دهنده(Developer Tools) و متدهای log، error، warn، table و clear آبجکت console صحبت کردیم، سپس وارد جزئیات متغیرها شدیم و با کلمه کلیدی let تعدادی متغیر نمونه تعریف کردیم.

در این جلسه با کلمات کلیدی const ،var و انواع داده هایی(Data Types) که در یک متغیر ذخیره می شود آشنا خواهید شد.

تعریف متغیر با const و var

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

شیوه استفاده از var مشابه let است، اما تفاوت های نامحسوسی با یکدیگر دارند که در آموزش های بعدی به آن می پردازیم.

var name = "Jack", family = "Smith"

var fullName
fullName = "Jack Smith"

 

متغیرهای تعریف شده با const در واقع متغیرهایی هستند که ثابت(Constant) نامیده می شوند و نمی توانید مقدار آنها را در طول برنامه تغییر دهید.

پس در هنگام تعریف یک ثابت دو قانون زیر را در نظر بگیرید:

قانون ۱- مقدار ثابت را در هنگام تعریف ثابت مشخص کنید.

const name = "Ali"

 

در کد زیر مقدار ثابت myAge مشخص نشده است، بنابراین در کنسول مرورگر خطای Missing initializer in const declaration نشان داده خواهد شد.

const myAge

 

قانون ۲- نمی توانید مقدار یک ثابت را در خطوط بعدی برنامه تغییر دهید.

ابن کد باعث بروز خطای Assignment to constant variable می شود.

const name = "Ali"
name = "Jafar"

 

اگر اطمینان دارید که مقدار یک متغیر هیچگاه تغییر نمی کند به جای let و var از const استفاده کنید.

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

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

در زبان جاوا اسکریپت انواع مختلفی از داده ها وجود دارد که آنها را به دو دسته کلی زیر تقسیم بندی می کنیم، در واقع داده ها به دو شیوه متفاوت در حافظه ذخیره می شود:

۱- انواع داده ساده/اولیه(Primitive Data Types)

شش نوع داده در این دسته قرار می گیرد:

  1. string : مقادیر رشته ای مثل اسامی افراد
  2. number :مقادیر عددی مثل ۹۹ یا  3.14
  3. boolean : مقادیر true و false
  4. null
  5. undefined
  6. symbols

در زبان جاوا اسکریپت برای داده های Integer، Float و Decimal نوع مشخصی وجود ندارد و این سه مورد با نوع number مشخص می شوند، اما در سایر زبان های برنامه نویسی برای هر کدام نوع جداگانه ای تعریف شده است.

۲- انواع داده ارجاعی/پیچیده(Reference Data Types)

انواع داده هایی که در این دسته جای می گیرند:

  1. آرایه array
  2. آبجکت object
  3. تابع function

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

در همین ابتدای کار بهتر است با ماهیت و چگونگی برخورد جاوا اسکریپت با داده های مختلف آشنا شوید.

۱- جاوا اسکریپت یک زبان Dynamically Typed Language است، یعنی چه؟

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

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

string message = "I am a c# code.";

 

همانطور که مشاهده می کنید در خط تعریف متغیر دقیقا نوع متغیر message با کلمه کلیدی string مشخص شده است، در واقع شما با اولین نگاه متوجه خواهید شد که قرار است در این متغیر مقادیر رشته ای ذخیره شود.

با این تفاسیر زبان حرفه ای #C را در گروه زبان های Statically Typed Language دسته بندی می کنیم. مطمئنا جاوا اسکریپت شبیه #C نیست و ما نمی توانیم از روش بالا استفاده کنیم.

برگردیم به جاوا اسکریپت، به نظر شما در متغیر زیر چه چیزی ذخیره شده است؟

let message

 

درست حدس زدید، undefined.

برای بررسی این موضوع کافی است نام متغیر را به تابع typeof ارسال کرده و نتیجه را در کنسول مرورگر مشاهده کنید.

let message
console.log( typeof( message ) )

 

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

۲- یک متغیر می تواند نوع های متفاوتی داشته باشد، یعنی چه؟

با توجه به اینکه در زبان جاوا اسکرییپ نمی توانیم نوع یک متغیر را در همان ابتدا مشخص کنیم، متغیرها می توانند در هر لحظه نوع متفاوتی داشته باشند.

مثلا در ابتدای کار به یک متغیر مقداری رشته ای اختصاص می دهیم، چند خط بعد یک عدد در آن ذخیره می کنیم و …

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

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

let message = "I am a JS code."
console.log( typeof( message ) )

message = 1399
console.log( typeof ( message ))

 

نوع متغیر message در ابتدا با توجه به مقدار I am a JS code از نوع string است، سپس با تغییر مقدار آن به عدد ۱۳۹۹ به نوع number تبدیل می شود.

۳- آیا امکان تعیین نوع داده در هنگام تعریف متغیر وجود دارد؟

همانطور که گفتیم این کار در جاوا اسکریپت به صورت مستقیم قابل انجام نیست، اما می توانید از زبان TypeScript که ساختاری شبیه #C دارد استفاده کنید، کدهای این زبان در نهایت به جاوا اسکریپت تبدیل(کامپایل) می شود.

کار با انواع داده ها

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

var website = 'modiredev.com'
console.log( typeof website ) // string
  
var age = 35
console.log( typeof age ) // number
 
var grade = 15.5
console.log( typeof grade ) // number
 
const isEducated = true
console.log( typeof isEducated ) // boolean 
 
const car = null;
console.log( typeof car ) // object but it's a bug

var test
console.log( typeof test ) // undefined
 
const sym = Symbol()
console.log( typeof sym ) // symbol

 

توجه داشته باشید که جاوا اسکریپت متغیر null را از نوع object تشخیص می دهد که این موضوع یک خطا و اشکال فنی است.

حالا چند نمونه از داده های ارجاعی را تست می کنیم.

var person = {
    name: 'Jack',
    family: 'Smith'	
    isEducated: true,
    age: 45 
}
console.log( typeof person ) // print object
 
const mixedArray = ['Alex', 5, 6, true, 13.5]
console.log( typeof mixedArray ) // print object

function doubleMe ( x ){
  return x * 2
}
console.log( typeof doubleMe ) // function

 

اصلا نگران نباشید در طول این دوره آموزشی با تک تک این موارد آَشنا خواهید شد.

چند نکته درباره ساختار کدهای جاوا اسکرپیت

۱- چگونه کامنت گذاری(Comments) کنیم؟

در زبان های برنامه نویسی به نکات، یادداشت ها و توضیحاتی که می توانید پیرامون کدهای خود اضافه کنید کامنت می گویند. یک کامنت خوب خوانایی کد را به شدت افزایش می دهد، سایر توسعه دهندگانی که با آنها کار می کنید کدهای شما را بهتر و سریعتر درک می کنند، در پروژه های بزرگ و پیچیده شما را از سردرگمی نجات می دهند.

در زبان جاو اسکریپت به دو صورت می توانید کامنت گذاری کنید:

۱- کامنت تک خطی یا Single Line Comments

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

// This is a code in JavaScript
let message = "Hello World"

message = "Hello JS" // Reassign message variable

 

۲- کامنت چند خطی یا Multi Line Comments

کامنت های خود را بین /**/ قرار دهید.

/*
    The code below will 
    declare a variable named message. 
*/
let message = "Hello World"

 

همچنین با کامنت می توانید از اجرای کدها جلوگیری کنید.

/*let message = "Hello World"
message = "Hello JS"*/

function sayHi(){
    return "Hi"
}

// console.log ( sayHi() )

 

۲- آیا در پایان دستورات باید از سمی کالن(Semicolon) استفاده کنیم؟

معمولا در زبان های برنامه نویسی مثل PHP و #C از سمی کالن(;) برای نشان دادن پایان دستورات استفاده می شود.

خوشبختانه در جاوا اسکریپت این موضوع کاملا اختیاری است، به همین دلیل ما تا اینجای آموزش در پایان دستورات از ; استفاده نکردیم.

let message = "Hello World" ;
message = "Hello JS" ;

console.log ( message ) ;

 

اگر سعی کنید هر دستور جاوا اسکریپت را در خط جداگانه تایپ کنید جاوا اسکریپت هنگام اجرای دستورات به صورت اتوماتیک و خودکار سمی کالن را به انتهای دستورات اضافه می کند، به این فرآیند Automatic Semicolon Insertion گفته می شود.

بنابراین به شرط رعایت وجود Enter بین هر دستور می توانید از سمی کالن صرف نظر کنید.

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

let message = "Hello World" ; message = "Hello JS" ;

 

خلاصه

  • برای تعریف متغیر می توانید از کلمات کلیدی let و var استفاده کنید.
  • ثابت نوعی متغیر است که مقدار آن نمی تواند در طول اجرای برنامه تغییر کند، برای تعریف ثابت از کلمه کلیدی const استفاده کنید.
  • در زبان جاوا اسکریپت داده ها به دو دسته کلی تقسیم بندی می شوند، انواع داده اولیه(Primitive) و انواع داده ارجاعی(Reference).
  • string، number، boolean، null و undefined از نوع Primitive و آرایه، آبجکت و تابع از نوع Reference هستند.
  • برای کامنت گذاری تک خطی از // و چند خطی از /**/ استفاده کنید.
  • اگر هر دستور را در خط جداگانه تایپ کنید می توانید از افزودن سمی کالن به انتهای دستورات صرف نظر کنید.

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

نظرات و سوالات کاربران

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *