آموزش جاوا اسکریپت Java Script قسمت هشتم

اکرم کریمی 1395/4/17 586

آموزش جاوا اسکریپت Java Script قسمت هشتم

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

ثوابت:

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

const n = 100;

عملگرهای محاسباتی:

هر عبارت محاسباتی ترکیبی از متغیرها، لیترال ها و عملگرهاست.

به مقادیری که به صورت مستقیم در یک عبارت محاسباتی وارد می شوند لیترال میگویند. مثلا در عبارت

x = y + 2;

2 لیترال می باشد.

(جمع: +) (تفریق: -) (ضرب: *) (تقسیم: /) (باقیمانده تقسیم: %) (یک واحد افزایش: ++) (یک واحد کاهش: —)

در مورد عملگرهای ++ و – قبلا توضیح داده شده است.

عملگرهای انتساب:

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

= (انتساب) مثال: x = y

=+ (انتساب جمع) مثال: x += y معادل x = x + y

=- (انتساب تفریق) مثال: x -= y معادل x = x - y

=* (انتساب ضرب) مثال: x *= y معادل x = x * y

=/ (انتساب تقسیم) مثال: x /= y معادل x = x / y

=% (انتساب باقیمانده) مثال: x %= y معادل x = x % y

عملگرهای مقایسه ای یا رابطه ای:

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

(تساوی: ==) (تساوی دقیق: ===) (نامساوی: =!) (نامساوی دقیق: ==!) (کوچکتر از: >) (کوچکتر یا مساوی: =>) (بزرگتر از: <) (بزرگتریا مساوی: =<)

عملگرهای منطقی:

این عملگرها عموما در عبارات مقایسه ای پیچیده تر استفاده می شوند.

! (نقیص -not) مثال: x!

&& (و – and) مثال: x && y

|| (یا – or) مثال: x || y

در عبارت x! اگر مفدار x برابر true باشد مقدار x! برابر false خواهد بود و بالعکس. در مورد استفاده از && هم اگر هر دو مقدار x و y برابر true باشد آنگاه نتیجه عبارت x && y نیز برابر true خواهد بود در غیر اینصورت برابر false خواهد بود. در کاربرد عملگر || هم اگر هر دو عملوند x و y برابر false باشد حاصل عبارت برابر false و در غیر اینصورت حاصل عبارت برابر true خواهد بود.

نکته: اولویت عملگر && از عملگر || بیشتر است و همچنین اولویت عملگر ! از عملگر && بیشتر است.

عملگرهای رشته ای:

برای مقایسه بین رشته ها از تمامی عملگرهای مقایسه ای می توان استفاده کرد. همچنین برای اتصال یا concat دو رشته به هم می توان از عملگر + استفاده کرد.

var s = "Hello" + " World! "; // a = Hello World!

عملگر شرطی ? :

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

var a, x = 5, y = 10;

a = x < y ? x * 3 : x * 5;

 

ابتدا عبارت x < y بررسی میشود و چون x کوچکتر از y است مقدار x * 3 در متغیر a قرار میگیرد. در صورتی که شرط برقرار نباشد مقدار بعد از : یعنی x * 5 درون متغیر قرار میگیرد.

 

عملگر کاما:

دو عبارت را مورد پردازش قرار می دهد مقدار عبارت دوم را به عنوان خروجی بر می گرداند.

a = (x = 5), x * 10;

ابتدا مقدار 5 را به متغیر x انتساب می کند و بعد از آن مقدار x * 10 را در متغیر a قرار می دهد. در نتیجه مفدار متغیر a برابر 50 خواهد شد.

 

دستور if:

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

ساختار اول:

if (شرط) {

 // some code

}         

 

ساختاردوم:

 

if (شرط) {

 // some code

}

else {

 // some code

}

 

 

 

 

ساختار سوم:

if (شرط 1) {

 // some code

}

else if (شرط 2) {

 // some code

}

...

Else{

 // some code

}

 

عبارتی که به عنوان شرط جلوی if قرار میگیرد می بایست یک مقدار Boolean یا یک مقدار عددی برگرداند. در صورتی که مقدار این عبارت برابر false یا صفر بود عبارات درون بلاک if اجرا نمی شوند و در غیر اینصورت به این معنی است که شرط برقرار است و عبارات درون بلاک if اجرا خواهند شد. در صورتی که شرط برقرار نباشد و این شرط دارای else باشد به سراغ آن رفته، اگر مجددا شرط داشته باشد، شرط بررسی شده در غیر اینصورت دستورات درون بلاک else اجرا خواهند شد.

 

 

دستور switch:

دستور if معمولا زمانی که انتخاب یک حالت از بین دو حالت است مورد استفاده قرار می گیرد. همچنین معمولا زمانی که انتخاب یک گزینه از بین چند گزینه باشد از دستور switch استفاده می شود. ساختار کلی آن به صورت زیر است:

switch (exp) {

 case “value1”:

 // some code 1

 break;

 …

 case “value”:

 // some code n

 break;

 default:

 // some code

}

 

اگر مقدار exp برابر value1 باشه دستورات some code 1 اجرا خواهد شد و همینطور الا آخر، اما در صورتی که مقدار exp برابر هیچکدام از مقادیر ارائه شده در case ها نباشد دستورات مربوط به default اجرا خواهد شد.

 

 

اگر من بخواهم که در صورتی که مقدار exp برابر value1 و value2 باشد همان دستورات some code 1 اجرا شود بدین گونه عمل میکنم:

switch (exp){

 case “value1”:

 case “value2”:

 // some code 1

 break;

 …

 case “value”:

 // some code n

 break;

 default:

 // some code

}

 

بدین گونه هم زمانی که مقدار exp برابر value1 باشد و هم زمانی که برابر value2 باشد دستورات some code 1 اجرا میشود.

 

 

در صورتی که بخواهم یک متغیر را هم در قسمت some code 1 و هم در قسمت some code n با یک نام یکسان تعریف کنم این اجازه به من داده نخواهد شد، به این دلیل که قبلا هم گفته بودم که حیطه عملکرد یک متغیر درون یک بلاک {} می باشد، پس من نمی توانم یک تغیر با نام یکسان را در یک بلاک تعریف کنم، یک راه حل برای این مشکل هست، اینکه کدهای مربوط به هر case را به همراه break آن درون یک بلاک دیگر قرار دهید و این بلاک باید قبل از case بعد یا default بسته شود.

ساختار تکرار:

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

دستور for:

ساختار کلی این حلقه به شکل زیر است:

for (مقدار اولیه اندیس حلقه; شرط حلفه; گام افزایش) {

 …                          

}

 

مثال:

 

for (var i = 0; i < 5; i++){

…

}

 

نکته اول: توجه کنید که حتما متغیر i را با استفاده از کلمه کلیدی var تعریف کنید. زیرا از شما خطا نمیگیرد اما محاسبات شما را به هم میزند. چون در صورت تعریف نشدن متغیر آن را متغیر سراسری در نظر میگیرد. (البته در صورت استفاده از use strict به شما خطا بر میگرداند).

 

نکته دوم: در صورتی که برای شرط حلقه عبارتی مانند i < arr.length میخواهید استفاده نمایید بهتر این است که ابتدا مقدار arr.length را درون یک متغیر ریخته و سپس آن متغیر را در شرط حلقه مورد استفاده قرار دهید. زیرا در غیر اینصورت در هر بار چک شدن شرط حلقه مجددا تعداد عناصر حلقه محاسبه می شود و این عملیاتی زمانبر است.

var l = arr.length;
for (var i = 0; i < l; i++){
…
}

 

دستور for in:

 

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

var obj = { name: “Ali”, family: ”Karimi” };
for (var index in obj){
 alert(index + “: “ + obj[index]); // return “name: Ali” at the first time
}

 

بدین صورت عمل می کند که در اولین بار name درون index قرار میگیرد و با استفاده از آن میتوان به مقدار آن در شئ obj دسترسی پیدا کرد. در مرتبه دوم family درون index قرار میگیرد.

 

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

var arr = [ “Ali”, ”Karimi”];
for (var index in arr){
 alert(index + “: “ + arr [index]); // return “0: Ali” at the first time
}

 

همانطور که ملاحظه میکنید در آرایه مقدار index برابر اندیس ها در آرایه خواهد شد.

 

نکته: در جاوااسکریپت، دستور foreach نداریم.

دستور while و do while:

ساختار دستور while:

while (شرط){

…

}

 

ساختار دستور do while:

 

do
{
…

} while (شرط);

 

این دو دستور هم تا زمانی که شرط آنها برقرار باشد کدهای درون بلاک خود را اجرا میکنند. تفاوت این دو در این است که دستور while از همان ابتدا شرط را بررسی میکند و در صورت برقرار نبودن بدنه آن اجرا نمی شود، اما دستور do while ابتدا یکبار بدنه آن اجرا میشود و برای اجرای دور دوم به بعد شرط آن بررسی میشود.

 

دستورات break و continue:

در هنگام مطالعه دستور switch دیدیم که دستور break باعث خروج اط ساختار switch میشد. زمانی که ما از این دستور درون یک حلقه استفاده کنیم باعث خروج از حلقه و خاتمه آن میشویم و کنترل اجرا را به خارج از حلقه تکرار منتقل میکنیم.

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

برچسب دستورات:

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

loopX:
for(var x = 0; x < 10; x++){
 for (var y = 0; y < 10; y++){
 document.write("(" + x + "," + y +")");
 if (x == 3 && y == 8)
 break loopX;
 }
 document.write("<br>");
}

 

در جلسه آینده به مباحث شئ گرایی در جاوااسکریپت خواهیم پرداخت

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

قسمت بعدی قسمت قبلی