برنامه نویسی 310 بازدید

در این مقاله تلاش خواهیم کرد نقشه جامعی از مبانی بنیادی جاوا اسکریپت ارائه کنیم. این نقشه با در نظر گرفتن افراد مبتدی نوشته شده است و اساساً مفاهیم بنیادی اصلی را بدون نیاز به صرف زمان زیاد برای مطالعه تک‌تک مفاهیم در اختیار شما قرار می‌دهد. با ما همراه باشید تا با 14 مفهوم بنیادی جاوا اسکریپت آشنا شوید. هدف این مقاله آن است که تصویری کلی از همه مفاهیم این زبان ارائه کند تا بتوانید یادگیری آن را سریع‌تر آغاز کنید. با این حال این به آن معنی نیست که این یک مقاله جامع است. در این مقاله از توضیحات کوتاه استفاده شده است که امید می‌رود مورد توجه شما قرار گیرد.

مفهوم بنیادی جاوا اسکریپت
برای نمایش در اندازه بزرگ‌تر روی تصویر کلیک کنید. (+ لینک دانلود تصویر)

ساختار کد

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

alert('Say hi');

نقطه‌ویرگول‌ها اجباری نیستند و در مواردی که یک شکستگی خط بین خطوط اتفاق می‌افتد درج می‌شوند. در واقع معادل نقطه برای جملات هستند. اما گاهی اوقات شکستگی خطوط ما را مطمئن نمی‌سازند که گزاره‌ها نیز شکسته شده‌اند. عملگر + می‌تواند به عنوان یک اتصال‌دهنده بین خطوط استفاده شود. به مثال زیر توجه کنید:

console.log('This ' + name + ' is gibrish');

use strict

برای مدت‌های مدیدی، جاوا اسکریپت در مورد سازگاری با نسخه‌های پیشین دغدغه‌ای نداشت، زیرا انتشار و قابلیت‌های جدید همپوشانی نداشت، اما بالاخره این همپوشانی ایجاد شد. در سال 2009، استاندارد ECMAScript 5 به اختصار ES5 انتشار یافت و قابلیت‌های جدید برخی از قابلیت‌های قبلی را اصلاح کردند. به صورت پیش‌فرض این اصلاح‌ها تا زمانی که از عبارت use strict استفاده نکنید اعمال نمی‌شوند. این عبارت use strict باید در ابتدای کد جاوا اسکریپت قرار گیرد و جز در این صورت اعمال نمی‌شود. امروزه همواره از use strict استفاده می‌کنیم، زیرا نمی‌خواهیم از پیاده‌سازی‌های قدیمی جاوا اسکریپت استفاده کنیم.

متغیرها

متغیرهایی مکان‌هایی برای ذخیره اطلاعات هستند. آن‌ها را می‌توان به عنوان بخش‌هایی از حافظه تصور کرد که داده‌ها را در خود جای می‌دهند. با استفاده از کلیدواژه let می‌توان یک متغیر را اعلان کرده و نامی برای آن تعیین کرد. بدین ترتیب متغیر مقداردهی می‌شود و می‌توانید با عملگر = مقداری به آن بدهید. اگر مقداری به متغیر ندهید، ‌به صورت پیش‌فرض شامل مقدار undefined خواهد بود که معنی آن این است که مقداردهی شده، اما هنوز چیزی در آن جای نگرفته است. به طور خلاصه معنی‌اش این است که هنوز مقداری به متغیر داده نشده است.

توجه کنید که این وضعیت متفاوت از null است. مقدار null به طور معمول باید به صورت دستی انتساب یابد. استفاده از مقدار null به این معنی است که به این واقعیت واقفید که مکان حافظه خالی است و فراموش نکرد‌ه‌اید آن را پر کنید و یا این که در طی کار اتفاق نادرستی رخ داده است. در اسکریپت‌های قدیمی برای اعلان متغیر از var استفاده می‌شد که تأثیر متفاوتی بر خروجی نهایی دارد.

انواع داده

جاوا اسکریپت در قیاس با زبان‌های برنامه‌نویسی دیگر، انواع داده‌های گسترده‌ای ندارد. در ادامه فهرست خلاصه‌ای از این انواع ارائه شده است.

number

let someNumber = 2984;
someNumber = 29.84;

برای انواع عددی از گیومه استفاده نمی‌کنیم. امکان تعریف اعداد صحیح و اعشاری وجود دارد و عملگرهای ابتدای روی این اعداد کار می‌کنند. یک نوع عدد خاص به صورت infinity نیز وجود دارد. برای تولید آن کافی است یک را بر صفر تقسیم کنید (1/0). این عدد در واقع بزرگ‌ترین عدد است و بی‌نهایت نامیده می‌شود.

اگر مقداری به صورت NaN دریافت کردید، معنی‌اش این است که یک خطای محاسباتی دارید. همچنین به این معنی است که تلاش کرده‌اید عملیات ریاضیاتی را روی چیزی اجرا کنید که معنی ندارد، مثلاً یک رشته متنی را بر یک عدد تقسیم کنید.

BigInt

بزرگ‌ترین عددی که در جاوا اسکریپت می‌توانیم داشته باشیم، عددی با طول 16 رقم است. در اغلب موارد اپلیکیشن‌های ما از اعداد با طول کمتر از 16 رقم استفاده می‌کنند. با این حال گاه ممکن است در کاربردهایی مانند رمزنگاری به اعداد بسیار بزرگ نیاز داشته باشیم. یک مقدار BigInt با افزودن n به انتهای عدد ساخته می‌شود:

const someMassiveNumber = 1234567890123456789012345678901234567890n;

String

String یا رشته یک متغیر متنی است که بر اساس قرارگیری درون گیومه مشخص می‌شود. 3 نوع گیومه به شرح زیر وجود دارند:

  • گیومه تکی (‘)
  • گیومه جفتی (“)
  • بک‌تیک (`)

گیومه‌های تکی و جفتی در جاوا اسکریپت تفاوتی ندارند. بک‌تیک بیشتر برای بسط کارکرد یک رشته جهت جاسازی متغیرها با استفاده از ساختار {} $ استفاده می‌شوند. به مثال زیر توجه کنید:

let cat = "Tibbers";
console.log(`Hi, ${cat}`);

اگر در مثال فوق از گیومه استفاده کنیم، صرفاً به یک رشته معمولی تبدیل می‌شود.

Boolean

متغیرهای بولی دو مقدار True یا False را نگهداری می‌کنند. به طور معمول برای نمایش نتیجه نوعی مقایسه مورد استفاده قرار می‌گیرد.

Null

Null به معنی تهی یا هیچ است. شبیه این مقدار را در زبان‌های دیگر برنامه‌نویسی ندیده‌ایم.

Undefined

Undefined به معنی این است که یک مقدار هنوز انتساب نیافته است.

Object

هر نوع داده دیگری به جز این انواع داده «ابتدایی» (Primitive) نامیده می‌شود، زیرا ساده هستند. اما اشیا یا objects امکان داشتن بیش از یک آیتم را در اختیار ما قرار می‌دهند.

تبدیل نوع

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

let someFakeBoolean = true;
someFakeBoolean = String(someFakeBoolean);
//using String() will convert your variable into a string
let someFakeNumber = "3872";
someFakeNumber = Number(someFakeNumber);
//using Number() will convert your string into a number

لطفاً توجه داشته باشید که تبدیل کردن متن تصادفی به اعداد میسر نیست و به طور کلی انجام چنین کاری هیچ معنی هم ندارد، چون در نهایت مقدار NaN به دست می‌آید. ()Boolean هر مقدار را به خروجی true یا false تبدیل می‌کند. هر چیز خالی مانند 0، null، undefined و NaN مقدار False بازگشت می‌دهد و بقیه موارد خروجی True دارند.

عملگرها

این عملگرها خاص جاوا اسکریپت نیستند و به طور کلی شبیه به بقیه زبان‌های برنامه‌نویسی عمل می‌کنند. فهرست آن‌ها به شرح زیر است:

AND (&) OR (|) XOR (^) NOT (~) LEFT SHIFT (<<) RIGHT SHIFT (>>) ZERO-FILL RIGHT SHIFT (>>>)

زمانی که از عملگرها استفاده می‌کنیم، می‌توانیم هر کاری را که دوست داریم روی مقادیر اجرا کنیم. به مثال زیر توجه کنید:

printLine(line, id){
 if(line & id){ //if both exists, run this code }
}

مقایسه‌ها

این‌ها شامل عملگرهای مقایسه ریاضیاتی هستند:

  • بزرگ‌تر یا کمتر از: a > b, a < b.
  • بزرگ‌تر یا مساوی و کمتر یا مساوی: a >= b, a <= b.
  • تساوی: a == b (توجه کنید که علامت مساوی منفرد به معنی انتساب است)
  • نامساوی: a!=b

alert, prompt, confirm

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

alert(yourMessageHere);

Prompt-ها دو آرگومان می‌گیرند که یکی سؤال و دیگری پاسخ است:

let promptMe = prompt('your question here', ['blue pill', 'red pill']);
alert(`You've taken the ${promptMe}`);

Confirm به منظور گرفتن تأیید کاربر استفاده می‌شود:

let isOver18 = confirm("Are you over 18?");

alert( isOver18 ); // true if OK is pressed

گزاره‌های شرطی

گزاره مشهور if ستون فقرات یک پروژه ابتدایی جاوا اسکریپت را تشکیل می‌دهد. ایده کار ساده است. «اگر» چیزی شرط مورد نظر را داشته باشد، کد اجرا می‌شود. به مثال زیر توجه کنید:

if (true) alert('woot!');

این گزاره شرطی همواره یک مقدار بولی به عنوان نتیجه بازگشت می‌دهد. بنابراین می‌توانید محاسبات ریاضی، بررسی و هر چیزی دیگری را تا زمانی که یک مقدار بولی است داشته باشید.

علاوه بر گزاره if، گزاره‌های else if و esle نیز وجود دارند. Else if یک گزاره if را بسط می‌دهد. Esle صرفاً در مواردی که همه گزاره‌های دیگر برقرار نباشند، اجرا می‌شود. در مثال زیر این حالت بررسی شده است:

if(false){
   //this code won't run because it returned false 
}else if(false){
   //this also won't run
}else if(false){
   //still nope
}else {
   //final catch all
}

حلقه‌ها

فرض کنید می‌خواهید یک گزاره if را به صورت مکرر اجرا کنید. به جای این که آن را چند بار بنویسید یا بخواهید آن را چند بار فراخوانی کنید، می‌توانید این گزاره if را درون یک حلقه قرار دهید. حلقه یک شرط دارد که وقتی شرط حلقه مقدار false پیدا کند، متوقف می‌شود:

let i = 0;
while(condition){
  //some code here
  //don't forget to set your exit clause by modifying the condition to return false. Most people just use i++
}

حلقه‌های do…while ساختار معکوسی دارند و شرط حلقه را پس از اجرای کد بررسی می‌کنند، چون گاهی اوقات لازم است که اول کد را اجرا کنیم و سپس شرط را بررسی نماییم. به مثال زیر توجه کنید:

do{
  //some code here
}while(condition);

گزاره‌های Switch

گزاره‌های switch اساساً امکان نوشتن گزینه‌ها را فراهم می‌سازند. به مثال زیر توجه کنید:

switch(yourValueHere){ 
   case 'optionOne' :    
     //your code here   
   break; 
   case 'optionTwo':   
     //your code here   
   break; 
   case 'optionThree':   
     //your code here   
   break; 
   default:   
     //your fallback code here 
}

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

switch(yourValueHere){ 
   case 'optionOne' :    
   case 'optionTwo':   
     //your code here   
   break; 
   case 'optionThree':   
     //your code here   
   break; 
   default:   
     //your fallback code here 
}

تابع‌ها

تابع‌ها، بلوک‌های سازنده اپلیکیشن‌ها، کتابخانه‌ها، فریمورک‌ها و هر برنامه جاوا اسکریپت هستند. برخی تابع‌های داخلی از قبیل ()alert و ()prompt در زبان جاوا اسکریپت وجود دارند که قبلاً بررسی کردیم. علاوه بر این‌ها شما می‌توانید تابع‌هایی برای خودتان بنویسید:

function functionNameHere(){
  //your code here
}

سپس به صورت زیر می‌توانید تابع‌تان را فراخوانی کنید:

functionNameHere();

عبارت‌های تابعی

برای نوشتن یک تابع بیش از یک روش وجود دارد. برخی روش‌های آن در مثال زیر ارائه شده است:

function yourFunctionName(){
 // some code here
}
let anotherFunction = function(){}

تابع‌های Arrow

یک تابع arrow صرفاً ساختاری متفاوت برای نوشتن کوتاه‌تر تابع‌ها است:

let functionNameHere = (argumentsHere) => //do something

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

let cat = () => { 
   //this is 
   //a multi-line 
   //example 
   return someValue; //is required. Can just be a straight return; 
}

زمانی که از آکولاد {} در تابع‌های arrow استفاده می‌کنیم، باید مطمئن شویم که از return نیز برای خروج از آن استفاده می‌کنیم. به این ترتیب به پایان این مقاله می‌رسیم.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای 0 نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

«میثم لطفی» در رشته‌های ریاضیات کاربردی و مهندسی کامپیوتر به تحصیل پرداخته و شیفته فناوری است. وی در حال حاضر علاوه بر پیگیری علاقه‌مندی‌هایش در رشته‌های برنامه‌نویسی، کپی‌رایتینگ و محتوای چندرسانه‌ای، در زمینه نگارش مقالاتی با محوریت نرم‌افزار با مجله فرادرس همکاری دارد.

نظر شما چیست؟

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