استفاده از متغیرها

بر خلاف زبان هایی مثل جاوا و سی شارپ، که هنگام تعریف متغیر باید نوع متغیر را هم مشخص می کردیم، در JavaScript کافیست که ابتدا کلمه کلیدی var و سپس نام متغیر را نوشته و به وسیله علامت مساوی یک مقدار به آن اختصاص دهیم :

var variableName = Value

در مثال زیر نحوه تعریف و مقداردهی متغیرها نمایش داده شده است :

  1 var numericVar = 10
  2 var boolVar    = true
  3 var StringVar  = "Hello World!"
  4 var arrayVar   = [1,5,8]
  5 var objectVar  = {'Name': 'jack', 'family': 'Scalia', 'Age': 7}
  6 
  7 console.log("numericVar = " , numericVar)
  8 console.log("boolVar    = " , boolVar)
  9 console.log("StringVar  = " , StringVar)
 10 console.log("arrayVar   = " , arrayVar)
 11 console.log("objectVar  = " , objectVar)
numericVar =  10
boolVar    =  true
StringVar  =  Hello World!
arrayVar   =  Array(3)
		0: 1
		1: 5
		2: 8
		length: 3
objectVar  =  Object
		Name: "jack"
		family: "Scalia"
		Age: 7

در خطوط 5-1، متغیر ها تعریف شده اند. اما نوع این متغیرها چیست؟ JavaScript نوع متغیرها را بسته به مقداری که به آنها اختصاص داده می شود در نظر می گیرد. مثلا نوع متغیر StringVar در خط 3 از نوع رشته است، چون یک مقدار رشته ای به آن اختصاص داده شده است. به خطوط 4 و 5 کد بالا توجه کنید. در خط 4 یک متغیر تعریف شده است و نوع داده ای که به آن اختصاص داده شده است از نوع array است. همانطور که در درس قبل اشاره شد، برای تعریف array علامت [] به کار می رود و آیتم های داخل آن به وسیله کاما از هم جدا می شوند :

var arrayVar = [1, 5, 8]

در خط 5 هم یک متغیر تعریف شده است و یک مقدار از نوع Object به آن اختصاص داده شده است. در تعریف Object به جای علامت [] از {} استفاده می شود. آیتم ها به صورت کلید/مقدار تعریف می شوند. بین کلید و مقدار علامت : و بین هر دو کلید/مقدار، هم علامت , قرار می گیرد :

var objectVar = {Key1:Value1, Key2:Value2, Key3:Value3}

مثلا در مثال بالا یک Object تعریف کرده ایم که سه آیتم یا کلید/مقدار دارد که بین آنها علامت کاما (,) قرار داده ایم. ولی بین یک کلید و مقدار مربوط به آن علامت : قرار گرفته است. برای اختصاص یک مقدار به چند متغیر می توان به صورت زیر عمل کرد :

var identifier1 =  identifier2 = ... indentifierN = Value

به مثال زیر توجه کنید :

var num1 = num2 = num3 = num4 = num5 = 10
var message1 = message2 = message3 = "Hello World!"

console.log(num1)
console.log(num4)
console.log(message1)
console.log(message3)
10
10
Hello World!
Hello World!

دقت کنید که برای متغیرهای تعریف شده در حالت بالا یک خانه حافظه تخصیص داده می شود، یعنی مقدار 10 در حافظه ذخیره شده و متغیرهای num1 و num2 و num3 و num4 و num5 به آن خانه از حافظه اشاره می کنند. همچنین می توان چند متغیر را تعریف کرد و برای هر یک از آن ها مقدار جداگانه ای مشخص نمود:

var identifier1, identifier2, ... indentifierN = Value1, Value2, ... ValueN

به مثال زیر توجه کنید:

var [num1, num2, message1] = [10, 12.5, "Hello World!"]

console.log(num1)
console.log(num2)
console.log(message1)
10
12.5
Hello World!

در کد بالا مقدار num1 برابر 10، num2 برابر 12.5 و message1 برابر !Hello World می باشد. در JavaScript، متغیر ها هم باید تعریف و هم مقداردهی شوند. یعنی اگر متغیری را تعریف کرده و به آن مقداری را اختصاص ندهید و برنامه را اجرا کنید با خطا مواجه می شوید :

var number

console.log(number)
Uncaught ReferenceError: number is not defined

همانطور که در درس قبل هم اشاره کردیم، یک رشته در اصل یک مجموعه از کاراکترهاست که در داخل علامت “” یا ‘ ‘ قرار دارند. هر کدام از این کاراکترها دارای یک اندیس است که به وسیله آن اندیس قابل دسترسی هستند. اندیس کاراکترها در رشته از 0 شروع می شود. به رشته زیر توجه کنید :

var message = "Hello World!"

در رشته بالا اندیس کاراکتر O برابر 4 است. برای درک بهتر به شکل زیر توجه کنید :

H e l l o   W o r l d  !
0 1 2 3 4 5 6 7 8 9 10 11

حال برای چاپ یک کاراکتر (مثلا W) از این رشته کافیست که به صورت زیر عمل کنیم :

var message = "Hello World! "

console.log(message[6])
W

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

var arrayVar  = [1, 5, 8]

console.log(arrayVar[2])
8

و اما در مورد Object، شما باید نام کلید را بنویسید تا مقدار آن برای شما نمایش داده شود:

var objectVar = {'Name': 'jack', 'Family': 'Scalia', 'Age': 7}

console.log(objectVar['Family'])
Scalia

نکته ای که بهتر است در همینجا به آن اشاره کنیم این است که کلید/مقدارها در Object می توانند از هر نوعی باشند و شما برای چاپ مقدار مربوط به یک کلید باید نام کلید را دقیق بنویسید. به مثال زیر توجه کنید :

var objectVar   = {1:'Jack', '2':'Scalia', 3:7}

console.log(objectVar['2'])
Scalia

در مثال بالا ما مقدار کلید ‘2’ را چاپ کرده ایم. حال اگر به جای ‘2’ عدد 2 را بنویسیم، نتیجه همان است :

var objectVar = {1:'Jack', '2':'Scalia', 3:7}

console.log(objectVar[2])
Scalia