http://niloblog.n63.ir/images/6me63v66fs28ll1lktm.jpg

وبلاگ پژوهشی - آموزشی وب سایت، شبکه های کامپیوتری

طراحی سایت ، برنامه نویسی وب سایت، تکنولوژی های سیسکو و مایکروسافت

وبلاگ پژوهشی - آموزشی وب سایت، شبکه های کامپیوتری

طراحی سایت ، برنامه نویسی وب سایت، تکنولوژی های سیسکو و مایکروسافت

Java Script

يكشنبه, ۳۱ فروردين ۱۳۹۳، ۰۶:۲۰ ب.ظ


بخش دوم


 کاربرد عملگرها در متن

 

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

 

strText01 = " Hello"     

strText02 = "my friends!"

document.write ( strText01 + strText02)

 

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

دستورات شرطی

 

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

 

دستور if

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

 

<"script language="javascript" type="text/javascript>

 

var d = new Date()

var t = d.getHours()

 

if ( t < 10)

{

document.write ( "<b> Good morning </b>")

                                                                                                                                                                             {

 

< /script>

 

حالا ببینیم که چه اتفاقی افتاده است، در خط سوم ما یک متغیر بنام d  تعریف کردیم که به آن شئ Date را نسبت دادیم و در خط بعد از آن یک متغیر دیگر که یکی از متدهای آن شئ را مقدار دهی کردیم تا ساعت سیستم برای ما ذخیره شود، سپس با یک خط خالی قسمت شرط را جدا کردیم تا به خوانایی اسکریپت کمک کنیم. کلمه if را می نویسیم، دقت کنید که شرط را حتماً داخل پرانتز باید نوشت و در آن هم همانطور که مشاهده می کنید از عملگر کوچکتر استفاده کردیم. در اینجا ساعت سیستم در متغیر t ذخیره شده است و دستور if داره شرط کوچکتر بودن را بررسی می کند. در خط بعدی هم علامت آکلاد { } را بکار بردیم که در اینجا آنرا برای نظم و خوانایی بیشتر کد استفاده کردیم اما فراموش نکنید که این دستور ممکن است از چندین قسمت تشکیل شود که در آنصورت بکار بردن آکلاد واجب است تا بتوانیم هر قسمت را از هم جدا کنیم. در آخر هم دستور تایپ یک متن مناسب در صفحه را به عنوان نتیجه شرط نوشتیم.

 

دستور if...else

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

 

if ( t < 10 || t == 10){

document.write ( "<b> Good morning </b>") 

}

else

{

document.write ( "<b> Hello friends </b>")

{

 

دستور if...else if...else

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

 

if ( t <= 10){

document.write ( "<b> Good morning </b>")

{

else if ( t > 10 && t < 13){

document.write ( "<b> Hello friends </b>")

}

else if ( t >= 13 && t < 18){     

document.write ( "<b> Good afternoon </b>")

}

else{

document.write ( "<b> Good evening </b>")

}

 

در دستورات شرطی جاوااسکریپت به غیر از مجموعه دستورات if یک مورد دیگر هم هست بنام دستور switch که در صفحه بعد به توضیح آن می پردازیم.

 


 

switch دستور

 

دستور switch یکی دیگر از دستورات شرطی جاوااسکریپت است که چندین شرط را برای متغیرها مقایسه می کند تا نتایج مختلف بدست بیاید. در حقیقت دستور switch از تکرار if else جلوگیری می کند. در مواردی که شرطها و نتایج آنها کم هستند می توانید از دستور if else استفاده کنید اما برای شرطهای زیاد بهتر است switch را بکار برید تا کد شما منظم تر باشد.

 

تنها مشکلی که این دستور دارد اینست که از نسخه javascript 1.2 به بعد از آن پشتیبانی شده که ممکن است بعضی از مرورگرهای قدیمی با این دستور مشکل داشته باشند، ولی در ایران مشکلی نیست چون مطمئناً به علت استفاده رایگان از مرورگرها، دیگر کسی را پیدا نخواهید کرد که مرورگر قدیمی داشته باشد.

 

دستور سوئیچ مانند if دارای قسمتهایی است، که اجازه دهید یک مثالی را بیان کنم و سپس به توضیح بخشهای مختلف آن بپردازم.

 

می خواهیم یک صفحه درست کنیم که به محض ورود کاربر به آن، آنروز هفته را در صفحه نمایش دهد:

 

<"script language="javascript" type="text/javascript>

 

var d = new Date ()

var weekday = d.getDay ()

 

                                                                                                                                                     ) switch ( weekday

 {

case 0 :

         ( "document.write ("Sunday

          break

case 1:

        (" document.write ("Monday

          break

case 2:

        (" document.write ("Tuesday

         break

case 3:

         ("document.write ("Wednesday

         break

case 4:

         ("document.write ("Thursday

          break

case 5:

         ("document.write ("Friday

         break

default:

        (" document.write ("Saturday

{

< /script>

 

خب حالا بپردازیم به توضیح کد تا ببینیم که چه اتفاقی افتاده است. ابتدا توسط شئ Date ، تاریخ و زمان سیستم را در یک متغیر بنام d ذخیره کردیم و سپس در خط بعدی توسط متد getDay این شئ ، عدد روز هفته را از سیستم بدست آوردیم و در متغیر weekday ذخیره کردیم. دقت کنید که این متد عدد برمیگرداند نه خود روزهای هفته را و در نظر داشته باشید که مفسر جاوااسکریپت روز اول هفته را یکشنبه میداند و عدد 0 را به آن تعلق میدهد و روز دوشنبه را عدد یک و به همین ترتیب تا آخرین روز هفته که شنبه باشد عدد 6 را میدهد.

 

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

 

case


همانطور که مشاهده می کنید از کلمه case بجای if else استفاده می کنیم و حالت مختلف شرط را در جلوی آن می نویسیم و سپس علامت : می گذاریم. در حقیقت ما اینجا به مفسرجاوااسکریپت می گوییم که اگر متغیر ما که روزهای هفته است برابر با صفر بود، نتیجه این می شود که باید کلمه Sunday را در صفحه چاپ کنی، در غیر اینصورت برو حالت بعدی یعنی case بعدی را مقایسه کن.

 

break

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

 

default

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

 

و در آخر هم آکلاد باز شده را می بندیم تا پایان این مجموعه از دستور سوئیچ مشخص شود.

 

در نظر داشته باشید که دستورات شرطی بسیار کاربرد دارند و حتی ممکن است در یک اسکریپت چندین بار از این دستورات استفاده کنید.

 

تکرار دستورات توسط حلقه ها

 

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

 

حلقه for

در این حلقه، مجموعه کد مورد نظر به تعداد مشخص تکرار می شود که در ابتدای حلقه تعداد دفعات اجرای کد باید اعلام شود. پس هرگاه می دانستید که چند بار قرار است کد اجرا شود از این حلقه استفاده کنید. بطور مثال می خواهیم اعداد از 0 تا 10 در صفحه چاپ شوند:

 

<"script language="javascript" type="text/javascript>

 

for ( i = 0; i <= 10; i++)

{

document.write ( " Number " + i + "</br>")

{

< /script>

 

خب برای اجرای این مثال ابتدا کلمه for را نوشتیم تا شروع حلقه را به مفسر اعلام کنیم سپس یک پرانتز باید باز کنیم تا پارامترهای لازم برای تکرار در این حلقه را وارد کنیم. اولین پارامتری که باید وارد شود، یک متغیر است با مقداردهی اولیه که به آن initial expression یا همان عبارت آغازین می گویند. سپس دومین پارامتر که یک شرط است و مفهوم آن اینست که حلقه باید ادامه پیدا کند تا متغیر کوچکتر یا برابر با عدد 10 بشود. سومین پارامتر به عبارت افزاینده یا increment expression معروف است که در اینجا به این مفهوم می باشد که در هر بار اجرای حلقه یک واحد باید به متغیر افزوده شود. در انتهای اعلام پارامترها پرانتز را می بندیم. فقط دقت کنید که در این پرانتز هر پارامتری که نوشته شود بلافاصله بعد از آن باید علامت ; قرار گیرد تا تداخلی بین آنها بوجود نیاید.

 

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

 

در خط بعد هم نتیجه را مابین آکلاد می گذاریم تا به اسکریپت نظم دهیم و سپس دستور تایپ نتیجه که کلمه number را چون می خواهیم عیناً در صفحه چاپ شود داخل " " گذاشتیم و بعد + که با پارامترهای دیگه ترکیب بشود. البته در اینجا بجای علامت بعلاوه می توانید کاما هم بگذارید و بعد از آن متغیر تعریف شده و در انتهای آنها از تگ br استفاده کردیم تا هربار که حلقه تکرار می شود نتیجه در یک خط جدید چاپ شود.

حلقه while

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


 

var i = 0

while (i <= 10)

{

document.write(" Number " + i + "</br>")

i++

}

 

کلمه while را می توانیم ترجمه کنیم به  مادامیکه ، پس در اینجا ما متغیر را جداگانه تعریف کردیم و حالا می گوییم، مادامیکه شرط کوچکتر یا مساوی 10 بودن برقرار نیست حلقه را تکرار کن و یک واحد به آن اضافه کن تا بالاخره شرط ما درست دربیاید.

 

حلقه Do...while

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

 

var i=0

do

{

document.write(" Number " + i + "</br>")

i=i+1

{

                                                                                                                                                          ) while (i <= 10

 

در اینجا همه چی مانند مثالهای بالا است با این تفاوت که کلمه  do به ابتدای حلقه اضافه شده و بررسی شرط هم به انتهای حلقه منتقل شده. همانطور که میدانید یکی از معنی های  do انجام دادن کاری است. مفهوم این کد هم بدین گونه است که دستور چاپ را انجام بده و یک واحد به متغیر اضافه کن مادامیکه متغیر کوچکتر یا مساوی با عدد 10 بشود. پس این دستورات حداقل یکبار اجرا می شوند تا به شرط برسند، شما می توانید برای رسیدن به صحت این گفته مقدار متغیر را بجای صفر به یک عدد دیگر تغییر دهید مثلاً عدد 20 را بدهید و یکبار کد را اجرا کنید.

 

در این مثال نوع دیگر افزایش هم نشان داده شده است که شما می توانید از این مدل هم استفاده کنید.

 

break

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

 

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

 

var i = 11

while (i >= 10)0

{

document.write(" Number " + i + "</br>")

i++

if ( i == 21 ) break

}

 

در این حلقه هیچگاه شرط درست نخواهد بود و تا بی نهایت ادامه پیدا می کند اما با استفاده از دستور break و شرطی که در نظر گرفتیم از تکرار نا محدود این حلقه جلوگیری کردیم در حقیقت از حلقه خارج شدیم. پس استفاده از این دستور را برای حلقه های پیچیده در نظر داشته باشید تا با مشکلات جدی مواجه نشوید.

 


آرایه

 

آرایه چیست؟

آرایه یکی دیگر از دستورات جاوااسکریپت می باشد که همانند بقیه دستورها یک وظیفه ای دارد و بهترین خاصیت این دستور، کوتاه کردن اسکریپت ما است. شئ آرایه یا همان Array برای ذخیره کردن مقادیر متفاوت در یک متغیر بکار می رود. همانطور که می دانید تا قبل از شناخت این دستور برای هر متغیر یک مقدار مشخص در نظر گرفته می شد، اما توسط یک آرایه شما می توانید چندین مقدار را به یک متغیر نسبت دهید. بطور مثال می توانید اسامی روزهای هفته را در یک متغیر ذخیره کنید. دستور آرایه دارای قسمتهایی است که با توجه به مثال زیر به توضیح آنها می پردازیم:

 

                                                                                                                                    var weekdays = new Array(7)

weekdays[0] = "Shanbeh"                      

                                                                                                                                      weekdays[1] = "Yekshanbeh                                            

weekdays[2] = "Doshanbeh"                       

weekdays[3] = "Seshanbeh"        

weekdays[4] = "Chaharshanbeh" 

weekdays[5] = "Panjshanbeh" 

weekdays[6] = "Jomeh" 

 

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

 

در خطوط بعد، نوبت به مقداردهی هر اندیس می رسد که متغیر را می نویسیم و هر اندیس را باید در کروشه [ ] بگذاریم و سپس آنها را برابر با یک مقدار قرار دهیم که این مقادیر هر چیزی می توانند باشند مانند رشته های متنی و یا اعداد.

 

مثال بالا را می توان بصورت زیر هم نوشت:

 

var weekdays = new Array ("Shanbeh","Yekshanbeh,…")      

 

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

 

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

 

for ( i=0; i<7; i++){

document.write ( weekdays[ i ] + "</br>")

}

 

خصوصیت آرایه

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

 

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

 

document.write ( weekdays.length + "</br>")

 

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

 

متدهای آرایه

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

 

concat(), join(), pop(), shift(), push(), unshift(), reverse(), slice(), sort(), splice(), toString(), valueOf()

17

متد concat برای ترکیب مقادیر دو یا سه آرایه بکار می رود. این متد هیچ چیزی را در آرایه ها تغییر نمی دهد و فقط مقادیر تعریف شده را در صفحه چاپ می کند.

 

متد join  تقریباً مانند متد قبلی عمل می کند و کلیه مقادیر را بصورت یک رشته متنی در صفحه نشان می دهد با این تفاوت که در این متد می توانید یک علامت مانند نقطه، تعیین کنید تا بین مقادیر چاپ شده در صفحه قرار گیرد. بصورت پیش فرض این علامت، کاما می باشد.

 

متد pop آخرین مقدار آرایه را جدا کرده و در صفحه نمایش می دهد. دقت کنید که این متد در خصوصیت length تأثیر می گذارد یعنی اگر بعد از این متد خصوصیت length را بکار برید، یک اندیس کمتر نشان می دهد.

 

متد shift برعکس متد قبلی است یعنی این متد اولین مقدار آرایه را جدا می کند و نشان می دهد.

 

متد push یک یا چند مقدار را به آخر یک آرایه اضافه می کند و اندیس جدید برمی گرداند.

 

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

 

متد reverse ترتیب نمایش مقادیر یک آرایه را برعکس کرده و در صفحه وب نمایش می دهد.

 

متد slice یکسری از مقادیر موجود در یک آرایه را جدا می کند که در این متد شماره اندیس مقداری که می خواهید از آنجا جداسازی شروع شود را باید بنویسید و همچنین می توانید آخرین مقدار هم مشخص کنید که اگر آنرا معین نکنید تا آخرین مقدار انتخاب خواهد شد.

 

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

 

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

متد toString مقادیر یک آرایه را تبدیل به یک رشته متنی می کند.

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

 

توابع

 

تابع چیست؟

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

 

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

 

function message()

{

alert ( " Hello friends!")

}

 

همانطور که مشاهده می کنید برای تعریف یک تابع از کلمه function استفاده می شود و دقت کنید که حروف آن باید حتماً کوچک باشد. بعد از نوشتن دستور function نوبت به تعیین یک اسم واحد برای این تابع است که بهتر است این اسم متناسب با وظیفه ای که این مجموعه قرار است انجام دهد باشد چون بخاطر آوردن آن هم راحتتر خواهد بود. سپس پرانتز می گذاریم تا در صورت لزوم پارامترهایی را در آن مشخص کنیم که به این پارامترها آرگومان و یا argument می گویند. طبق معمول هم با گذاشتن علامت آکلاد مشخص می کنیم که این مجموعه در کجا شروع و در کجا ختم می شود که در بین این علامت هم کدهای جاوااسکریپت را وارد می کنیم. در اینجا یک دستوری


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

 

شما یک تابع را در هر کجای یک سند html می توانید بکار برید. اگر دستوراتی است که هنگام باز شدن صفحه وب باید اجرا شوند و یا آماده اجرا باشند پس بهتر است در قسمت head نوشته شوند. حتی می توانید یک تابع را در فایل خارجی جاوااسکریپت که با پسوند js ذخیره می شود وارد کنید تا در صفحات مختلف آنرا بکار برید.

 

فراخوانی یک تابع

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

 

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

 

<html>

<head>

<title> Call function </title>

 

<"script type="text/javascript" type="text/javascript>

function message()

{

alert ( " Hello friends!")

}

< /script>

 

< /head>

<body>

 

<form>

<"input type="button" onclick="message( )" value="Click me>

< /form>

 

<body/>

< /html>

 

نگران دستور alert و onclick نباشید چون در بخشهای بعدی با آنها آشنا خواهید شد. فقط به فراخوانی تابع دقت کنید که چگونه بکار برده می شود.

 

آرگومان یک تابع

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

 

                                                                                                                                           ) function message ( msg

{

alert ( msg)

}

< /script>

 

<"input type="button" onclick="message( 'Hello friends!' )" value="Click me>

 

در اینجا یک آرگومان بنام  msg تعیین کردیم تا هنگام فراخوانی تابع، مقدارش به تابع فرستاده شود و نتیجه آن اجرا شود. در حقیقت عبارت Hello friends مقدار این آرگومان می باشد. تعیین آرگومان هیچ محدودیتی ندارد و فقط باید آنها را با علامت کاما از هم جدا کنید.


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

 

بازگرداندن یک مقدار توسط دستور return

توابع جاوااسکریپت دارای یک دستوری بنام return هستند که وظیفه این دستور برگرداندن مقادیر تعریف شده در آن تابع است.

 

function greeting(){

return ( " Hello world!")

}

.......

 

document.write ( greeting())

 

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

 

<html>

<head>

<title> return statement </title>

 

<"script type="text/javascript" type="text/javascript>

function total (a,b)

{

x = a * b

return x

}

< /script>

 

< /head>

<body>

<"script type="text/javascript" type="text/javascript>

price = total ( 4, 15)

document.write ( price)

< /script>

< /body>

< /html>

 

همانطور که مشاهده می کنید دو آرگومان برای تابع total تعریف شده است که در متغیر x ذخیره می شوند و توسط دستور return مقدارشان به تابع ارسال خواهد شد.

 

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

 

موافقین ۱ مخالفین ۰ ۹۳/۰۱/۳۱
محسن احدی آتشگاه

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی