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

یکی از اساسی ترین ویژگی های یک زبان برنامه نویسی تعریف و مقدار دهی متغیر هایی است که پشتیبانی میکند. متغیر ها ظرف های نامداری هستند که میتوانند در یک زبان برنامه نویسی تعریف شده و مقداردهی شوند.


انواع متغیر ها

 JavaScript به ما اجازه ی کار با سه داده نوع اولیه و اصلی را میدهد :

  • اعداد – برای مثال 123 ، 120.05 و ...
  • رشته ها – برای مثال "This text string" و یا "این رشته از متن" و ...
  • بولین – برای مثال true  یا false

جاوا اسکریپت همچنین دارای دو داده نوع اصلی جزئی نیز هست، null  و undefined که هرکدام از آنها تنها یک مقدار را تعریف میکنند. به علاوه ی این داده نوع های اصلی ، جاوا اسکریپت از داده نوع های مرکب و ترکیبی که با نام "object" شناخته میشوند نیز پشتیبانی میکند. در مقالات آینده به طور مفصل در مورد اشیا (objects) صحبت خواهم کرد.

نکته : جاوا اسکریپت تفاوتی بین مقادیر عددی صحیح و اعشاری قائل نیست. تمام اعداد در جاوا اسکریپت به عنوان مقادیر اعشاری در نظر گرفته میشوند. جاوا اسکریپت اعداد را با استفاده از فرمت اعشاری 64 بیتی تعریف شده به وسیله استاندارد IEEE 754 تعریف میکند.


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

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

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

<script type="text/javascript">
  
      var money;
      var name;
   
</script>

شما همچنین میتوانید به شکلی که در زیر آمده است، چندین متغیر را با استفاده از یک کلمه ی کلیدی var تعریف کنید :

<script type="text/javascript">
   
      var money, name;
   
</script>

ذخیره ی یک مقدار در یک متغیر مقدار دهی متغیر نام دارد. شما میتوانید مقدار دهی متغیر را در زمان ایجاد متغیر و یا در زمان دیگری ، وقتی به آن احتیاج دارید انجام دهید. برای مثال ممکن است متغیری با نام money ایجاد کرده و مقدار 2000.50 را در آن قرار دهید. برای متغیری دیگر، عمل مقدار دهی اولیه را در زمان تعریف آن انجام میدهید :
 

<script type="text/javascript">
   
      var name = "Ali";
      var money;
      money = 2000.50;
   
</script>

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

 

جاوا اسکریپت یک زبان untyped است. این به این معناست که متغیر های جاوا اسکریپت میتوانند مقداری از هر داده نوعی را بپذیرند. برخلاف بعضی دیگر از زبان های برنامه نویسی، در زمان تعریف یک متغیر نمیتوانید به جاوا اسکریپت بگویید چه نوعی از یک مقدار را باید در خود نگه دارد. نوع یک متغیر میتواند در زمان اجرای یک برنامه جاوا اسکریپت به صورت اتوماتیک تغییر کند.


قلمرو متغیر های جاوا اسکریپت

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

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

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

<html>
   <body>
      <script>
         
            var myVar = "global"; // Declare a global variable
            function checkscope( ) {
               var myVar = "local";  // Declare a local variable
               document.write(myVar);
            }
            checkscope();
      </script>
   </body>
</html>

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

local

 


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

در هنگام نامگذاری متغیر ها در جاوا اسکریپت، قوانین زیر را در ذهن داشته باشید :

شما نباید از هیچکدام از کلمات کلیدی رزرو شده ی زبان جاوا اسکریپت به عنوان نام برای متغیر استفاده کنید. این کلمات کلیدی در قسمت بعدی در همین مقاله آورده شده است. برای مثال متغیر هایی با نام های break و Boolean صحیح نیستند.

نام متغیر ها در جاوااسکریپت نباید با اعداد آغاز شوند (9-0). آنها میتوانند با حروف و یا با کاراکتر زیرخط (_) آغاز شوند. برای مثال 123test یک نام ناصحیح برای متغیر و 123test_ یک نام صحیح است.


کلمات کلیدی در جاوا اسکریپت

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

abstract else instanceof switch
boolean enum int synchronized
break export interface this
byte extends long throw
case false native throws
catch final new transient
char finally null true
class float package try
const for private typeof
continue function protected var
debugger goto public void
default if return volatile
delete implements short while
do import static with
double in super  

بروزرسانی مقاله ی متغیر ها در جاوا اسکریپت : استفاده از کلمه کلیدی let به جای var - منتشر شده در ۱۳ فروردین ۱۳۹۷ 

متغیر ها

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

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

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


تعریف متغیر با استفاده از کلمه ی let

متغیر یک ظرف نامدار برای اطلاعات است و می‌توان از متغیرها برای ذخیره داده هایی از قبیل کالاها و یا کاربران استفاده کرد. در نمونه مثال زیر یک متغیر با نام message تعریف شده است : 

let message;

اکنون می توانیم مقداری داده را با استفاده از عملگر انتساب (=) در داخل این متغیر قرار دهیم : 

let message;

message = 'Hello'; // store the string

در نمونه مثال بالا رشته مورد نظر در فضای حافظه ای که به متغیر اختصاص داده شده است ، ذخیره می شود. اکنون می توانیم با استفاده از نام متغیر به آن دسترسی داشته باشیم :

let message;
message = 'Hello!';

alert(message); // shows the variable content

برای اختصار و کوتاه شدن کد نویسی می‌توان تعریف و مقدار دهی یک متغیر را در یک خط انجام داد :

let message = 'Hello!'; // define the variable and assign the value

alert(message); // Hello!

 حتی می توان چندین متغیر را در یک خط تعریف و مقدار دهی کرد :

let user = 'John', age = 25, message = 'Hello';

نمونه مثال بالا اگرچه کوتاه تر به نظر می‌رسد اما این روش توصیه نمی شود. برای خوانایی بهتر، هر متغیر را در یک خط تعریف و مقدار دهی کنید. اگرچه نمونه کد زیر کمی طولانی تر است ولی خواندن آن آسان تر است :

let user = 'John';
let age = 25;
let message = 'Hello';

بعضی از افراد تعریف متغیرها را به مانند زیر انجام می دهند  :

let user = 'John',
  age = 25,
  message = 'Hello';

و یا از کاما برای تعریف چندین متغیر استفاده می کنند :

let user = 'John'
  , age = 25
  , message = 'Hello';

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


استفاده از کلمه var به جای let

در اسکریپت های قدیمی تر از کلمه var برای تعریف متغیرها استفاده می شد. برای مثال :

var message = 'Hello';

نکته : کلمه var نیز همانند کلمه let عمل می کند و از آن برای تعریف متغیر ها استفاده می شود اما با کلمه let کمی تفاوت دارد. این تفاوت در حال حاضر برای ما مهم نیست و در فصول آینده در مورد آن صحبت خواهیم کرد.


درک مفهوم یک متغیر

اگر یک متغیر را همچون یک جعبه تصور کنیم مفهوم آن برای ما قابل درک می شود. برای مثال متغیری به نام message را می توان همچون یک جعبه تصور کرد که روی آن برچسب "message" خورده و مقدار "!Hello" در آن قرار دارد :

متغیر

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

let message;

message = 'Hello!';

message = 'World!'; // value changed

alert(message);

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

تغییر مقدار متغیر

ما همچنان می توانیم دو متغیر را تعریف کرده و مقدار داده یکی را در دیگری کپی کنیم :

let hello = 'Hello world!';

let message;

// copy 'Hello world' from hello into message
message = hello;

// now two variables hold the same data
alert(hello); // Hello world!
alert(message); // Hello world!

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

  • نام متغیر باید تنها شامل حروف ، اعداد و حروف خاص $ و _ باشد
  • اولین حرف از نام یک متغیر نمی‌تواند از اعداد باشد

در نمونه مثال زیر نام گذاری دو متغیر به صورت صحیح انجام شده است :

let userName;
let test123;

وقتی نام متغیر مورد نظر از چندین کلمه تشکیل شده باشد معمولاً از قاعده camelCase استفاده می کنیم. این قاعده به این شکل است : کلمات یکی پس از دیگری نوشته میشوند و به غیر از کلمه اول بقیه کلمات با حروف بزرگ آغاز می شوند برای مثال : myVeryLongName

همانطور که قبلا ذکر شد دو حرف '$' و '_' را می توان در نامگذاری متغیرها استفاده نمود. تعریف متغیرهای زیر صحیح است : 

let $ = 1; // declared a variable with the name "$"
let _ = 2; // and now a variable with the name "_"

alert($ + _); // 3

در زیر نمونه مثال هایی از نامگذاری ناصحیح متغیرها آورده شده است :

let 1a; // cannot start with a digit

let my-name; // a hyphen '-' is not allowed in the name

 

نکته : دو متغیر با نام‌های apple و AppLE با هم متفاوت هستند.

 

در جاوا اسکریپت حتی می‌توان متغیرها را به با حروفی به غیر از زبان انگلیسی نامگذاری کرد اما این کار توصیه نمی‌شود :

let имя = '...';
let 我 = '...';


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


 کلمات رزرو شده

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


 برای مثال کلمات let , class ، return ،function  کلمات رزرو شده ای هستند که نمی توان از آنها برای تعریف و نامگذاری متغیرها استفاده کرد. کد زیر با خطا روبرو خواهد شد :

let let = 5; // can't name a variable "let", error!
let return = 5; // also can't name it "return", error!

مقدار دهی متغیرها بدون تعریف آنها

به صورت معمول ابتدا باید متغیری را تعریف و سپس مقدار دهی کرد اما در زمان های گذشته از نظر تکنیکی این امکان وجود داشته است که متغیر را بدون تعریف ، مقداردهی کرد یعنی از کلمات var یا let استفاده نکرد. این امکان هنوز هم در نسخه های جدید جاوا اسکریپت وجود دارد. در صورتی که در اسکریپت خود از دستور "use strict" استفاده نمی کنید میتوانید از این امکان استفاده کنید. مثال :

// note: no "use strict" in this example

num = 5; // the variable "num" is created if didn't exist

alert(num); // 5

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

"use strict";

num = 5; // error: num is not defined

نکته : دستور use strict به مرورگر میفهماند شما مایل به استفاده از جدیدترین قابلیت های زبان جاوا اسکریپت در کد خود هستید و نمیخواهید از قواعد قبلی این زبان پیروی کنید.


ثابت ها

برای تعریف ثابت ها (متغیر هایی که مقدار شان غیر قابل تغییر است) باید از کلمه رزرو شده const به جای let استفاده کرد :

const myBirthday = '18.04.1982';

متغیر هایی که با استفاده از کلمه کلیدی const تعریف می‌شوند ثابت نام دارند.  آنها نمی توانند تغییر کنند و تلاش برای تغییر آنها منجر به خطا خواهد شد.

const myBirthday = '18.04.1982';

myBirthday = '01.01.2001'; // error, can't reassign the constant!

هرگاه برنامه نویسی مطمئن شد که مقدار متغیری هیچگاه تغییر نخواهد کرد میتواند از کلمه const برای تعریف آن استفاده کند. برای اینکه غیر قابل تغییر بودن یک ثابت را نشان دهیم از حروف بزرگ برای نام گذاری ثابت ها استفاده می کنیم. برای مثال :

const COLOR_RED = "#F00";
const COLOR_GREEN = "#0F0";
const COLOR_BLUE = "#00F";
const COLOR_ORANGE = "#FF7F00";

// ...when we need to pick a color
let color = COLOR_ORANGE;
alert(color); // #FF7F00

مزایا :

  • COLOR_ORANGE ساده تر از به خاطر سپردن "#FF7F00" است
  • احتمال خطای تایپی در COLOR_ORANGE به مراتب کمتر از "#FF7F00" است
  • وقتی در حال خواندن کدی هستیم COLOR_ORANGE به مراتب معنادار تر از "#FF7F00" است

نام گذاری صحیح متغیرها

در معنادار بودن نامگذاری متغیرها باید دقت شود .اگر نیاز است مدتی برای آن وقت بگذارید و به آن فکر کنید این کار را انجام دهید. نامگذاری متغیرها یکی از پر اهمیت ترین و پیچیده ترین مهارت های برنامه نویسی است. در پروژه های واقعی بیشتر زمان بر روی تغییر و گسترش کدهایی که از قبل نوشته شده اند صرف می شود و کمتر کدی از صفر نوشته می شود. وقتی که بعد از مدتی به کدی که قبلا نوشته شده است نگاه می‌کنیم متغیرهایی که با معنا نامگذاری شده اند کمک زیادی را در فهم کد خواهند داشت.

بعضی از قوانینی که بهتر است رعایت کنید عبارت است از :

  • از نامهایی که برای انسان معنادار است استفاده کنید همچون : userName و shoppingCart
  • از اختصار و یا نام های کوتاه استفاده نکنید.برای مثال از نام های b ، a  و c به عنوان نام متغیر استفاده نکنید.
  • از نامی که نهایت  توضیح برای متغیر را در خود دارد استفاده کنید. مثالی از نام بد برای متغیرها عبارت اند از data و value . این دو نام اطلاعات زیادی را در مورد عملکرد آنها به ما ارائه نمی‌دهند
  •  در تیم برنامه نویسی خود بر روی  اصطلاحات توافق کرده و آنها را در ذهن خود مرور کنید اگر یک ملاقات کننده سایت user نامیده می شود می‌توانیم متغیرهایی که مرتبط با آن هستند به صورت currentUser و newUser تعریف کنیم.
منتشر شده در ۱۳ مهر ۱۳۹۶ حمید رضا ملکی ۳۳۳۴ بازدید
دیدگاه ها

هنوز دیدگاهی ثبت نشده

برای ارسال دیدگاه لازم است ابتدا وارد سایت شوید