<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Iran Developers Network</title>
	<atom:link href="http://www.irandevelopers.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.irandevelopers.com</link>
	<description>IDN بزرگترین مرجع توسعه دهندگان ایران - آموزش زبانهای برنامه نويسی</description>
	<lastBuildDate>Mon, 23 Aug 2010 08:51:43 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>کنترل تقویم شمسی در دات نت</title>
		<link>http://www.irandevelopers.com/programming/net/solarcalendar-dotnet-2186/</link>
		<comments>http://www.irandevelopers.com/programming/net/solarcalendar-dotnet-2186/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 07:35:33 +0000</pubDate>
		<dc:creator>mohsen.asghari</dc:creator>
				<category><![CDATA[.NET - دات نت]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/uncategorized/-2186/</guid>
		<description><![CDATA[هدف اصلی؟ از انجا که کنترلهای بسیار زیادی جهت استفاده برنامه نویسان در بازارنرم افزار وجود دارد و بسیار هم قدرتمند هستند ولی تقویم شمسی را تحت پوشش خود قرار نمیدهند از این رو ما بر آن شدیم تا کنترلی برای راحتی برنامه نویسان عزیز طراحی کنیم که هم اکنون در اختیار شما میباشد. این [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: right;"><a href="http://www.irandevelopers.com/wp-content/uploads/2010/08/SnapShot_Cal.gif"><img class="alignnone size-full wp-image-2191" title="SnapShot_Cal" src="http://www.irandevelopers.com/wp-content/uploads/2010/08/SnapShot_Cal.gif" alt="SnapShot Cal کنترل تقویم شمسی در دات نت" width="333" height="180" /></a></div>
<div style="text-align: right;"><strong>هدف اصلی؟</strong></div>
<p style="text-align: right;">
<hr />
<div style="text-align: right;">
<p>از انجا که کنترلهای بسیار زیادی جهت استفاده برنامه نویسان در بازارنرم افزار وجود دارد و بسیار هم قدرتمند هستند ولی تقویم شمسی را تحت پوشش خود قرار نمیدهند از این رو ما بر آن شدیم تا کنترلی برای راحتی برنامه نویسان عزیز طراحی کنیم که هم اکنون در اختیار شما میباشد.</p>
<p><strong>این کنترل در چه محیطی کاربرد دارد؟<br />
</strong></p>
<hr />
<div>
<p>این کنترل جهت استفاده در محیط <strong><em><span style="text-decoration: underline;">.net ورژن ۳٫۵</span></em></strong> و پروژه های <strong><em><span style="text-decoration: underline;">وب </span></em></strong>مورد استفاده قرار میگیرد.</p>
<div><strong>نحوه قرار دادن کنترل در صفحه؟</strong></div>
<hr />
<div>کافی است تنها پس از دریافت dll مورد نظر به ترتیب زیر عمل کنیم:</div>
<ol>
<li>ایجاد یک tab جدید در toolbox که در visual studio 2008 وجود دارد.</li>
<li>بر روی tab ایجاد شده راست کلیک کرده و Choos Items&#8230; را انتخای میکنیم</li>
<li>بازدن دکمه Browse در صفحه ای که باز شده است مسیر AndishControls.dll را انتخاب و دکمه ok را کلیک کنید.</li>
<li>حال کافی است مانند بقیه کنترل های موجود در visualstudio 2008 کنترل مورد نظر خود را انتخاب و در صفحه خود قرار دهید.</li>
</ol>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td></td>
<td>خاصیت های مهم کنترل تقویم فارسی</td>
<td></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td>چنانچه این متغییر به False مقدار دهی گردد تاریخ امروز در کنترل هنگام بار گزاری صفحه نمایش داده نخواهد شد و به صورت پیش فرض True میباشد.</td>
<td>SetLoad</td>
</tr>
<tr>
<td bgcolor="#f2f2f4">تاریخی را که شما انتخاب کرده اید در اختیار شما قرار میدهد (از نوع String)</td>
<td bgcolor="#f2f2f4">StrDate</td>
</tr>
<tr>
<td>شما میتوانید عکس دکمه ای که تقویم را باز میکند با استفاده از این خاصیت با دادن مسیر یک عکس عوض کنید.</td>
<td>UrlImage</td>
</tr>
</tbody>
</table>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td></td>
<td>کنترل های مرتبط</td>
<td></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>در کنار این کنترل کلاسی به نام Calender در NameSpace AndishMand وجود داردکه به شما امکانات زیر را میدهد.</p>
<table cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td>این متد با دریافت object از نوع Date time آن را به فارسی تبدیل میکند</td>
<td>ConvertTofarsiDate</td>
</tr>
<tr>
<td bgcolor="#f2f2f4">این متد با دریافت یک تاریخ شمسی از نوع string آن را تبدیل به تاریخ میلادی از نوع string میکند.</td>
<td bgcolor="#f2f2f4">ConvertToMiladiDate</td>
</tr>
<tr>
<td>تاریخ شمسی را به این متد داده و شماره روز آن را در یافت میکنیم.</td>
<td>GetDayDate</td>
</tr>
<tr>
<td>از ENUM =&gt; DayofWeek یکی از روز هارا داده ومعادل فارسی آن را در یافت میکنیم</td>
<td>GetDayName</td>
</tr>
<tr>
<td>تاریخ شمسی را به این متد داده و شماره ماه آن را دریافت میکنیم</td>
<td>GetMonthDate</td>
</tr>
<tr>
<td>تاریخ شمسی را به این متد داده و شماره سال آن را دریافت میکنیم.</td>
<td>GetYearDate</td>
</tr>
<tr>
<td>این متد همانند متد ConvertToFarsiDate عمل میکند با این تفاوت که ساعت را به شما نمیدهد.</td>
<td>GetFarsiDate</td>
</tr>
<tr>
<td>تشخیص این که امسال ویا هر سالی که شما به این متد بدهید را به صورت Boolean در اختیار شما قرار میدهد.</td>
<td>ShamsiIsLeapYear</td>
</tr>
<tr>
<td>دو تاریخ فارسی را به آن میدهید و اختلاف این دو تاریخ را به صورت یک عدد دریافت میکنید.</td>
<td>GetDayOfWeek</td>
</tr>
<tr>
<td>تاریخ شمسی را به این متد داده و نام آن روز را در یافت میکنید.</td>
<td>SubTwoDate</td>
</tr>
</tbody>
</table>
<p style="text-align: right;">لینک دریافت کنترل <a href="http://www.andishco.com/Download.aspx?DT=1">http://www.andishco.com/Download.aspx?DT=1</a></p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/net/solarcalendar-dotnet-2186/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>اصل قابلیت جانشینی در طراحی کلاس ها &#8211; LSP</title>
		<link>http://www.irandevelopers.com/programming/csharp/lsp-class-2152/</link>
		<comments>http://www.irandevelopers.com/programming/csharp/lsp-class-2152/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 21:01:42 +0000</pubDate>
		<dc:creator>حمید احمدی بهنام</dc:creator>
				<category><![CDATA[سی شارپ]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[LSP]]></category>
		<category><![CDATA[method hiding]]></category>
		<category><![CDATA[override]]></category>
		<category><![CDATA[virtual]]></category>
		<category><![CDATA[طراحی كلاس]]></category>
		<category><![CDATA[وراثت]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/uncategorized/-2152/</guid>
		<description><![CDATA[LSP مخفف عبارت Liskov Substitutability Principle می باشد و منظور از آن ارایه قانونی است که هنگام طراحی کلاس ها باید رعایت شود به گونه ای که بتوان instance های کلاس وارث را به جای instance های کلاس پایه در برنامه به کار برد. بنابراین می توان از آن به عنوان یک راهنما هنگام نوشتن [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: small;">LSP مخفف عبارت <strong>L</strong>iskov <strong>S</strong>ubstitutability <strong>P</strong>rinciple می باشد و منظور از آن ارایه قانونی است که هنگام طراحی کلاس ها باید رعایت شود به گونه ای که بتوان instance های کلاس وارث را به جای instance های کلاس پایه در برنامه به کار برد. بنابراین می توان از آن به عنوان یک راهنما هنگام نوشتن کلاس های جدید استفاده کرد.</span></p>
<p><span style="font-size: small;">همانطور که می دانید وراثت یک مفهوم کلیدی در برنامه نویسی شی گراست. با کمک وراثت می توان یک رفتار اساسی و پایه برای یک مجموعه کلاس که همگی نیار به انجام این رفتار پایه را دارند، ایجاد نمود.</span></p>
<p><span style="font-size: small;">با توجه به قوانین حاکم بر مفوم وراثت در برنامه نویسی شی گرا می دانیم که می توان یک reference از کلاس پایه ایجاد کنیم ولی در عمل به جای اینکه این reference به یک object از نوع همان کلاس پایه اشاره کند،‌ آن را به object ای از نوع کلاس مشتق شده از آن کلاس پایه ارجاع دهیم. بدیهی است که خلاف این گفتار صادق نیست و نمی توان reference از نوع کلاس وارث را به object ای از نوع کلاس پایه ارتباط داد.</span></p>
<p><span style="font-size: small;">فرض کنید دو کلاس به نام های General و Special داریم که Special از General ارث برده است:‌</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">class General</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">{</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">public void PrintReport()</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">{</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">MessageBox.Show(&#8220;This is from General Class!&#8221;);</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">}</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">}</span></p>
<p style="text-align: left;" dir="ltr">
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">class Special : General</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">{</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">public void PrintReport()</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">{</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">//Do Somthing else.</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">}</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">}</span></p>
<p><span style="font-size: small;">همانطور که می بینید هر دو کلاس دارای متدی به نام PrintReport می باشند ولی‌ فرض می کنیم از لحاظ ماهیت عملکرد ،‌ این دو متد یکسان نیستند و رفتار متفاوتی از خود نشان می دهند.</span></p>
<p><span style="font-size: small;">با توجه به آنچه که در مورد قوانین مربوط به وراثت گفته شد می توان نوشت:‌</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">General generalObj = new General();</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">Special specialObj = new Special();</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">General generalObj2 = new <strong>Special()</strong>;</span></p>
<p><span style="font-size: small;">اکنون فرض کنید کلاس دیگری به نام Report داریم که دارای متدی به نام Reporter می باشد که به صورت public و static است.</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">class Report</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">{</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">public static void Reporter(General instance)</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">{</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">instance.PrintReport();</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">}</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">}</span></p>
<p><span style="font-size: small;">حال اگر بخواهیم از متد Reporter از کلاس Report استفاده کنیم با توجه به static بودن متد می توان نوشت:‌</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">Report.Reporter(generalObj);</span></p>
<p><span style="font-size: small;">با اجرای این دستور مشخص است که متد PrintReport مربوط به generalObj که object ای از کلاس General میباشد اجرا می شود. همانطور که قبلاً‌ اشاره شد،‌ می توانیم object ای از کلاس مشتق شده را به reference ای از کلاس پایه نسبت دهیم بنابراین می توانیم object ای از کلاس Special را به عنوان آرگومان به متد Reporter ارسال نماییم. و مشکل دقیقاً‌از همین جا آغاز می شود. مشکلی که LSP سعی در جلوگیری از وقوع آن را دارد.  برای توضیح بیشتر اگر بنویسیم:‌</span></p>
<p style="text-align: left;" dir="ltr"><span style="font-size: small;">Report.Reporter(specialObj);</span></p>
<p><span style="font-size: small;">با اجرای این دستور متد PrintReport از specialObj که object ای از کلاس Special می باشد اجرا می گردد. ولی می دانیم که PrintReport ‌مربوط به کلاس General و Special دو عملکرد متفاوت از خود نشان می دهند. بنابراین رفتار برنامه هنگامی که یک instance از کلاس پایه را به عنوان آرگومان به متد Reporter می فرستیم در مقایسه با حالتی که یک instance از کلاس مشتق شده را به Reporter ارسال می نماییم متفاوت خواهد بود و این یعنی کلاس مشتق شده نمی تواند جایگزین مناسبی برای کلاس پایه باشد.</span></p>
<p><span style="font-size: small;"><em>توضیح:‌ در این مقاله کوتاه سعی شده است </em><em>LSP</em><em> ،‌ ابتدا در حالت کلی و صرف نظر از ویژگی های زبان های برنامه نویسی شرح داده شود و سپس در ادامه نحوه وقوع آن در زبان </em><em>C#</em><em> مورد بررسی قرار گرفته است. دستوری که در بالا بدان اشاره شد به دلیل وقوع </em><em>Method Hiding</em><em> در زبان </em><em>C#</em><em> ،‌ منجر به نقض </em><em>LSP</em><em> نمی شود و استفاده از قطعه کد مربوطه تنها به منظور بیان مفوم </em><em>LSP</em><em> و جلب توجه خواننده به این نکته است که جایگزینی کلاس وارث به جای کلاس پایه می تواند منجر به ایجاد مشکل در عملکرد برنامه شود. </em></span></p>
<p><span style="font-size: small;">LSP در واقع به همین موضوع اشاره می کند که نحوه ی طراحی کلاس ها باید به گونه ای باشد که کلاس های وارث بتوانند به عنوان جانشین برای کلاس هایی که از آن ها ارث برده اند به کار روند به شکلی که رفتار برنامه با این جانشینی تغییر نکند.</span></p>
<p><span style="font-size: small;">در زبان C# می توانیم در دو حالت متد های تکراری که دارای امضای یکسانی هستند را هم در کلاس پایه و هم در کلاس مشتق شده داشته باشیم. یک حالت این است که از روش Method Hiding استفاده کنیم به این صورت که متدی با نام و امضای یکسان هم در کلاس پایه و هم در کلاس وارث داشته باشیم. البته در این حالت کامپایلر به منظور اعلام Method Hiding یک warning می دهد که می توان برای اینکه مشخص شود اینکار آگاهانه صورت می گیرد از کلمه کلیدی new در اعلان متد استفاده کنیم.</span></p>
<p><span style="font-size: small;">نکته ای که وجود دارد این است که حتی اگر به جای ارسال object ای از نوع General به متد Reporter ،‌ یک object از نوع Special بفرستیم ،‌ از آنجایی که متد تکراری بر اساس Method Hiding است ،‌ در هر صورت متد PrintReport مربوط به General اجرا می گردد. بنابراین عدم یکسان بودن رفتار متد های PrintReport منجر به رفتار متفاوت برنامه نمی گردد لذا اصل LSP‌ در این حالت نقض نمی شود.</span></p>
<p><span style="font-size: small;">حالت دیگر در مورد متد های تکراری این است که متدی که در کلاس پایه تعریف شده است ،‌ به صورت virtual &#8220;و&#8221; متدی که در کلاس وارث است به صورت override تعریف شده باشد (متد virtual در کلاس وارث override شود). در این وضعیت اگر object ای از نوع Special‌ را به Reporter‌ ارسال نماییم ،‌ متد PrintReport مربوط به Special اجرا می گردد در صورتی که اگر یک instance از نوع General ارسال می شد ،‌ متد PrintReport مربوط به General اجرا می شد. بنابر این در این حالت یکسان نبودن رفتار متد های PrintReport هنگامی که یک object کلاس وارث به جای یک object کلاس پایه مورد استفاده قرار می گیرد منجر به متفاوت شدن رفتار برنامه و در نتیجه نقض شدن اصل LSP می گردد. کاری که برای جلوگیری از این وضعیت می توان انجام داد این است که هنگام override کردن متد virtual ماهیت عملکرد متد متفاوت نباشد،‌ هر چند که طبیعی است با توجه شرایط کلاسی که درون آن override شده است سفارشی شده باشد. قابل توجه است که اگر object ای از نوع کلاس وارث به صورت ضمنی یا صریح به object ای از نوع کلاس پایه تبدیل شود،‌ تنها در صورتی می تواند از متد های <em>تکراری</em> خودش استفاده کند که این متد ها override شده باشند و به صورت Method Hiding نباشند.</span></p>
<p><span style="font-size: small;">نویسنده:‌ حمید احمدی بهنام</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/csharp/lsp-class-2152/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>کاراکترهای مخصوص در جاوا اسکریپت (JavaScript Special Characters )</title>
		<link>http://www.irandevelopers.com/programming/javascript/javascript-special-characters-2142/</link>
		<comments>http://www.irandevelopers.com/programming/javascript/javascript-special-characters-2142/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 20:26:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java Script]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/uncategorized/-2142/</guid>
		<description><![CDATA[در جاوا اسکریپت شما می توانید یک کاراکتر خاص را به یک رشته متنی بوسیله ی یک &#8221; بک اسلش &#8221; (\) اضافه کنید . وارد کردن کاراکتر خاص بک اسلش برای اضافه کردن آپوستروف، خط جدید، کوتیشن و کاراکترهای خاص دیگری داخل یک رشته متنی استفاده می شود. به کد جاوا اسکریپت زیر نگاه [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl">در جاوا اسکریپت شما می توانید  یک کاراکتر خاص را به یک رشته متنی بوسیله ی یک &#8221; بک اسلش &#8221; (\) اضافه  کنید .</p>
<h2 dir="rtl">وارد کردن  کاراکتر خاص</h2>
<p dir="rtl">بک اسلش برای اضافه کردن آپوستروف، خط جدید،  کوتیشن و کاراکترهای خاص دیگری داخل یک رشته متنی استفاده می شود.</p>
<p dir="rtl">به کد جاوا اسکریپت زیر نگاه کنید</p>
<pre dir="rtl">var txt="We are the so-called "Vikings" from the north.";
document.write(txt);</pre>
<p dir="rtl">در جاوااسکریپت،  یک رشته با یک یا دو کوتیشن شروع و خاتمه می یابد .این به این معنی است که  رشته بالا به این صورت جدا می شود‌ : We are the so-called</p>
<p dir="rtl">برای حل این مشکل، شما باید یک  علامت بک اسلش(\) را قبل  از هر دابل کوتیشن در عبارت &#8221; vikings&#8221; قرار  دهید . این کار باعث می شود هر دابل کوتیشن به لفظ رشته تبدیل شود.</p>
<pre>var txt="We are the so-called \"Vikings\" from the north.";
document.write(txt);</pre>
<p dir="rtl">حالا جاوا  اسکریپت خروجی مربوط به متن را اینگونه نمایش می دهد :      We are the so-called “Vikings” from the north.</p>
<p dir="rtl">حالا یک مثال  دیگر :</p>
<pre>document.write ("You \&amp; I are singing!");</pre>
<p dir="rtl">مثال بالا این  خروجی را تولید می کند :</p>
<pre dir="rtl">   You &amp; I are singing!</pre>
<p dir="rtl">در جدول زیر تعدادی دیگر از کاراکترهایی که می  شود به رشته متنی با علامت بک اسلش اضافه کرد آورده شده است :</p>
<table border="1" cellspacing="0" cellpadding="0" width="55%">
<tbody>
<tr>
<td><strong>Code</strong></td>
<td><strong>Outputs</strong></td>
</tr>
<tr>
<td>\&#8217;</td>
<td>single quote</td>
</tr>
<tr>
<td>\&#8221;</td>
<td>double quote</td>
</tr>
<tr>
<td>\&amp;</td>
<td>ampersand</td>
</tr>
<tr>
<td>\\</td>
<td>backslash</td>
</tr>
<tr>
<td>\n</td>
<td>new line</td>
</tr>
<tr>
<td>\r</td>
<td>carriage  return</td>
</tr>
<tr>
<td>\t</td>
<td>tab</td>
</tr>
<tr>
<td>\b</td>
<td>backspace</td>
</tr>
<tr>
<td>\f</td>
<td>form feed</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/javascript/javascript-special-characters-2142/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>عبارت try &#8230; catch جاوا اسکریپت</title>
		<link>http://www.irandevelopers.com/programming/javascript/try-catch-javascript-2141/</link>
		<comments>http://www.irandevelopers.com/programming/javascript/try-catch-javascript-2141/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 20:24:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java Script]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/uncategorized/-2141/</guid>
		<description><![CDATA[عبارت Try … Catch  جاوا اسکریپت: عبارت Try … Catch  به شما نشان می دهد که یک بلاک از کد را برای خطا چک کند . خطاهای فریبنده ی جاوا اسکریپت زمانی که یک صفحه ی وب در اینترنت باز می شود ما یک جعبه ی هشدار جاوا اسکریپت را دیده ایم که به ما [...]]]></description>
			<content:encoded><![CDATA[<h2 dir="rtl">عبارت Try … Catch  جاوا  اسکریپت:</h2>
<p dir="rtl">عبارت Try … Catch  به شما نشان می دهد که یک بلاک از کد را برای خطا چک کند .</p>
<h2 dir="rtl">خطاهای  فریبنده ی جاوا اسکریپت</h2>
<p dir="rtl">زمانی که یک صفحه ی وب در اینترنت باز می شود ما  یک جعبه ی هشدار جاوا اسکریپت را دیده ایم که به ما می گوید که یک خطای  زمان اجرا وجود دارد و می گوید : آیا دوست دارید اشکال زدایی شود؟ پیغام  خطایی مانند این ممکن است برای توسعه دهندگان مفید باشد اما نه برای  کاربران . زمانی که کاربر خطاها را می بیند معمولا صفحه ی وب را ترک می  کند.</p>
<p dir="rtl">این بخش به شما آموزش میدهد که چگونه پیغامهای  خطای جاوا اسکریپت را متوجه شوید و اداره کنید.</p>
<h2 dir="rtl">عبارت  Try … Catch</h2>
<p dir="rtl">عبارت Try … Catch  به شما اجازه می دهد که یک بلاک از کد جاوا اسکریپت را  برای خطا چک کنید . بلاک Try  شامل  کدهایی برای اجراست و بلاک  Catch  شامل کدهایی است که اگر خطایی رخ دهد اجرا می شود.</p>
<p><strong>Syntax</strong></p>
<pre>try
  {
  //Run some code here
  }
catch(err)
  {
  //Handle errors here</pre>
<p dir="rtl"><strong>توجه :</strong> این Try … Catch  با حروف کوچک نوشته می شود . استفاده از حروف بزرگ برای  نوشتن آن موجب ایجاد خطا ی جاوا اسکریپت می شود.</p>
<p dir="rtl"><strong>مثال ۱ :</strong></p>
<p dir="rtl">در مثال زیر فرض شده که زمانی  که کاربر بر روی دکمه کلیک کند پیغام &#8221;  Welcome guest! &#8220;    ظاهر  می شود .هرچند در اینجا در تابع  message()  غلط املایی وجود دارد . alert()  با املای غلط به کار بردن()   adddlert است .  یک خطای جاوا اسکریپت رخ داده است. بلاک Catch  دچار یک خطا شده است و یک کد عادی برای اداره  ی آن اجرا می کند . این کد نشان می دهد که یک پیغام خطای  عادی به کاربر می گوید که چه کاری انجام دهد .</p>
<h2>Example</h2>
<pre>&lt;html&gt;
&lt;head&gt;
&lt;script&gt;
var txt=""
function message()
{
try
  {
  adddlert("Welcome guest!");
  }
catch(err)
  {</pre>
<p><strong>مثال ۲</strong> :</p>
<p dir="rtl">مثال بعدی از یک جعبه ی تایید  برای نشان دادن یک پیغام عادی که به کاربران می گوید که آنها می توانند بر  روی  ok  کلیک  کنند و به دیدن صفحه ادامه بدهند و یا بر روی Cancel  کلیک کنند و به صفحه ی  homepage  بروند؛ استفاده می کند .اگر روش تایید مقدار false  برگرداند ، کاربر بر روی cancel  کلیک کرده و کد کاربر را دوباره هدایت می کند .اگر روش  تایید مقدار true  برگرداند  کدها کار خاصی انجام می دهد .</p>
<h2>Example</h2>
<pre>&lt;html&gt;
&lt;head&gt;
&lt;script&gt;
var txt=""
function message()
{
try
  {
  adddlert("Welcome guest!");
  }
catch(err)
  {
  txt="There was an error on this page.\n\n";
  txt+="Click OK to continue viewing this page,\n";
  txt+="or Cancel to return to the home page.\n\n";
  if(!confirm(txt))
    {
    document.location.href="http://www.w3schools.com/";
    }
  }
}
&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;input value="View message" /&gt;
&lt;/body&gt;

&lt;/html&gt;</pre>
<h2 dir="rtl">عبارت  throw</h2>
<p dir="rtl">عبارت throw  می تواند همراه با try … catch  بزای ایجاد یک حالت خاص برای خطا استفاده می شود . درباره  ی عبارت throw  در فصل  بعد یاد خواهیم گرفت .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/javascript/try-catch-javascript-2141/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>event ها در جاوا اسکریپت</title>
		<link>http://www.irandevelopers.com/programming/javascript/javascripts-events-2140/</link>
		<comments>http://www.irandevelopers.com/programming/javascript/javascripts-events-2140/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 20:22:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java Script]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/uncategorized/-2140/</guid>
		<description><![CDATA[وقایع جاوا اسکریپت Event  ها وقایعی هستند که توسط جاوا اسکریپت می توانند نمایش داده شوند . Events با استفاده از جاوا اسکریپت ، ما توانایی ساختن صفحات متحرک و پویا را داریم . این   event  ها توسط جاوا اسکریپت می توانند نشان داده شوند. هر عنصر در صفحه وب هر اتفاق معینی که می [...]]]></description>
			<content:encoded><![CDATA[<h2 dir="rtl">وقایع  جاوا اسکریپت</h2>
<p dir="rtl">Event  ها وقایعی هستند که توسط جاوا اسکریپت می  توانند نمایش داده شوند .</p>
<h2 dir="rtl">Events</h2>
<p dir="rtl">با استفاده از جاوا اسکریپت ،  ما توانایی ساختن صفحات متحرک و پویا را داریم . این   event   ها  توسط جاوا اسکریپت می توانند نشان داده شوند.</p>
<p dir="rtl">هر عنصر در صفحه وب هر اتفاق  معینی که می تواند توسط جاوا اسکریپت راه اندازی شود را دارد.برای مثال ما  می توانیم از  event  ، OnClick  یک  عنصر دکمه که نشان می دهد یک تابع زمانی که یک کاربر بر روی دکمه کلیک کند ؛  اجرا می شود .</p>
<p dir="rtl"><strong>مثالی از event  ها:</strong></p>
<p dir="rtl">-          با کلیک موس</p>
<p dir="rtl">-          زمانی که یک صفحه یا یک عکس  بارگذاری می شود</p>
<p dir="rtl">-          موس بر روی یک نقطه خاص بر روی  صفحه برود</p>
<p dir="rtl">-          انتخاب کردن یک فیلد ورودی در  فرم HTML</p>
<p dir="rtl">-          فرستادن یک فرم HTML</p>
<p dir="rtl">-          یک بار کلیک کردن</p>
<p dir="rtl"><strong>توجه:</strong> معمولا   event  ها در  ترکیب با توابع استفاده می شوند و یک تابع قبل از آنکه  event   ای  اتفاق بیفتد اجرا نمی شود .</p>
<h2 dir="rtl">Onload , onunload  :</h2>
<p dir="rtl">Event ، onload , onunload   زمانی  که کاربر وارد صفحه می شود و یا از آن خارج می شود راه اندازی می شود. Event ، onload  معمولا برای چک کردن نوع مرورگر بیننده و نسخه مرورگر و  یک نسخه مناسب از صفحه وب مبنی بر اطلاعات را بارگذاری می کند.</p>
<p dir="rtl">هر دو  event   معمولا  برای رسیدگی کردن به کوکی ها که باید موقعی که کاربر وارد صفحه می شود و  یا آنرا ترک می کند گذارده شده باشد ، استفاده می شود.برای مثال شما می  توانید یک صفحه جهنده برای درخواست نام کاربر به محض اولین ورود به صفحه  داشته باشید . اسم مورد نظر در داخل کوکی ذخیره می شود . دفعه ی بید که  بیننده وارد صفحه ی شما می شود شما می توانید یک گفته ی جدید مانند این را  داشته باشید:</p>
<p dir="rtl">&#8220;Welcome Jone  Doe!&#8221;</p>
<h2 dir="rtl">onFocus,  onBlur , onChange:</h2>
<p dir="rtl">این سه event  هایی هستند که برای ترکیب با اعتبارسنجی بین فیلدهای فرم  استفاده می شوند .</p>
<p dir="rtl">مثال زیر چگونگی استفاده از  event  ، onchange  آورده شده ؛تابع checkEmail()  زمانی که کاربر مقدار فیلد را تغییر می دهد ، فراخوانی می  شود.</p>
<pre>&lt;input size="30"&gt;</pre>
<h2 dir="rtl">Onsubmit:</h2>
<p dir="rtl">Event ، submit  همه ی فیلدها را قبل از فرستادنشان اعتبارسنجی می کند .</p>
<p dir="rtl">در مثال زیر چگونگی استفاده از  این  event  آورده  شده. تابع checkForm()  زمانی  که کاربر دکمه ای از فرم را فشار می دهد فراخوانی می شود .اگر مقدار فیلد  مورد قبول نباشد ، ارسال صفحه متوقف می شود .تابع  checkForm()   مقدار  True و یا False  را بر می گرداند..اگر مقدار True  برگرداند صفحه ارسال می شود در غیر این صورت ارسال صفحه  cancel   می  شود.</p>
<h2 dir="rtl">onMouseOver  and onMouseOut:</h2>
<p dir="rtl">ایندو برای ایجاد صفحات جنبنده  استفاده  می شود.</p>
<p dir="rtl">در مثال زیر event ، onMouseOver  اورده شده است . یک جعبه ی هشدار زمان نشان دادن این Event  ظاهر می شود .</p>
<pre>&lt;a href="http://www.webfocus.ir"&gt;
&lt;img src="webfocus.gif" alt="Webfocus" /&gt;&lt;/a&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/javascript/javascripts-events-2140/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>عبارت For &#8230; in در جاوا اسکریپت</title>
		<link>http://www.irandevelopers.com/programming/javascript/for-in-javascrripts-2139/</link>
		<comments>http://www.irandevelopers.com/programming/javascript/for-in-javascrripts-2139/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 20:20:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java Script]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/uncategorized/-2139/</guid>
		<description><![CDATA[این عبارت در میان عناصر یک آرایه یا در میان خواص یک شی حلقه ایجاد می کند . Syntax for (variable in object)   {   code to be executed   } توجه: کدی که در بدنه ی for … in  باشد حلقه را برای هر عنصز یا شی فقط یک بار اجرا می کند [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl">این عبارت در میان عناصر یک آرایه یا در میان  خواص یک شی حلقه ایجاد می کند .</p>
<p>Syntax</p>
<pre>for (variable in object)
  {
  code to be executed
  }</pre>
<p dir="rtl"><strong>توجه:</strong> کدی که  در بدنه ی for … in  باشد حلقه را برای هر عنصز یا شی فقط یک بار اجرا می کند  .</p>
<p dir="rtl"><strong>توجه:</strong> آرگومانها می توانند به  عنوان یک متغییر نامگذاری شوند ، یک عنصز آرایه یا یک مشخصه ی شی .</p>
<p dir="rtl"><strong>مثال:</strong></p>
<p dir="rtl">استفاده از عبارت  For … In  برای ایجاد  حلقه در میان یک آرایه :</p>
<pre dir="rtl">&lt;html&gt;
&lt;body&gt;

&lt;script&gt;
var x;
var mycars = new Array();
mycars[0] = "Saab";
mycars[1] = "Volvo";
mycars[2] = "BMW";

for (x in mycars)
  {
  document.write(mycars[x] + "&lt;br /&gt;");
  }
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/javascript/for-in-javascrripts-2139/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Break and Continue در جاوا اسکریپت</title>
		<link>http://www.irandevelopers.com/programming/javascript/break-and-continue-2138/</link>
		<comments>http://www.irandevelopers.com/programming/javascript/break-and-continue-2138/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 20:17:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java Script]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/uncategorized/-2138/</guid>
		<description><![CDATA[عبارت Break عبارت Break  حلقه را می شکند و کد بعد از حلقه را اجرا می کند (اگر کدی بعد از آن نوشته شده باشد) مثال &#60;html&#62; &#60;body&#62; &#60;script&#62; var i=0; for (i=0;i&#60;=10;i++)   {   if (i==3)     {     break;     }   document.write("The number is " + i);   document.write("&#60;br /&#62;");   [...]]]></description>
			<content:encoded><![CDATA[<h2 dir="rtl">عبارت Break</h2>
<p dir="rtl">عبارت Break  حلقه  را می شکند و کد بعد از حلقه را اجرا می کند (اگر کدی بعد از آن نوشته شده  باشد)</p>
<p dir="rtl"><strong>مثال</strong></p>
<p dir="rtl">
<pre dir="rtl">&lt;html&gt;
&lt;body&gt;
&lt;script&gt;
var i=0;
for (i=0;i&lt;=10;i++)
  {
  if (i==3)
    {
    break;
    }
  document.write("The number is " + i);
  document.write("&lt;br /&gt;");
  }
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<h2 dir="rtl">عبارت Continue</h2>
<p dir="rtl">عبارت Continue  حلقه  جاری را می شکند و با مقدار بعدی ادامه پیدا می کند .</p>
<p dir="rtl"><strong>مثال</strong></p>
<pre dir="rtl">&lt;html&gt;
&lt;body&gt;
&lt;script&gt;
var i=0
for (i=0;i&lt;=10;i++)
  {
  if (i==3)
    {
    continue;
    }
  document.write("The number is " + i);
  document.write("&lt;br /&gt;");
  }
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p dir="rtl">
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/javascript/break-and-continue-2138/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>حلقه while در جاوا اسکریپت</title>
		<link>http://www.irandevelopers.com/programming/javascript/while-javascripts-2137/</link>
		<comments>http://www.irandevelopers.com/programming/javascript/while-javascripts-2137/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 20:15:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java Script]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/uncategorized/-2137/</guid>
		<description><![CDATA[حلقه while حلقه ی  while  ، یک بلاک از کد را تا زمانیکه شرطی برقرار باشد اجرا می کند. Syntax while (var&#60;=endvalue)   {   code to be executed   } توجه: &#60;=  می تواند هر عبارت مقایسه ای باشد. مثال: مثال زیر یک حلقه را با مقدار اولیه i=0 را تعریف کرده .حلقه تا [...]]]></description>
			<content:encoded><![CDATA[<h2 dir="rtl">حلقه while</h2>
<p dir="rtl">حلقه ی  while  ، یک بلاک از کد را تا زمانیکه شرطی برقرار باشد اجرا می  کند.</p>
<p dir="ltr">Syntax</p>
<pre>while (var&lt;=endvalue)
  {
  code to be executed
  }</pre>
<p dir="rtl"><strong>توجه:</strong> &lt;=  می  تواند هر عبارت مقایسه ای باشد.</p>
<p dir="rtl"><strong>مثال:</strong></p>
<p dir="rtl">مثال زیر یک حلقه را با مقدار  اولیه i=0 را  تعریف کرده .حلقه تا زمانی که i کوچکتر ویا  مساوی ۵ است ادامه می یابد. مقدار i با هر بار  اجرای حلقه یک واحد افزایش می یابد.</p>
<p dir="rtl"><strong>مثال:</strong></p>
<pre dir="rtl">&lt;html&gt;
&lt;body&gt;
&lt;script&gt;
var i=0;
while (i&lt;=5)
  {
  document.write("The number is " + i);
  document.write("&lt;br /&gt;");
  i++;
  }
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p dir="rtl">
<h2 dir="rtl">حلقه  do … while:</h2>
<p dir="rtl">حلقه  do … while یک نوع خاصی از حلقه ی  while  است .این حلقه یک بلاک از کد را <strong>حداقل یک بار</strong> اجرا می کند سپس تا زمانی که شرط درست باشد آن را تکرار می کند.</p>
<p>Syntax</p>
<pre>do
  {
  code to be executed
  }
while (var&lt;=endvalue);</pre>
<p><strong>مثال</strong>:</p>
<p dir="rtl">مثال زیر از حلقه ی do … while  استفاده  کرده است . حلقه ی do … while  <strong>حداقل یک بار اجرا می شود </strong>؛ حتی زمانی  که شرط غلط باشد. زیرا قبل از اینکه شرط بررسی گردد بدنه آن اجرا می شود .</p>
<pre dir="ltr">          &lt;html&gt;
&lt;body&gt;
&lt;script&gt;
var i=0;
do
{
document.write("The number is " + i);
document.write("&lt;br /&gt;"); 
i++;
 }
while (i&lt;=5);
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/javascript/while-javascripts-2137/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>حلقه for در جاوا اسکریپت</title>
		<link>http://www.irandevelopers.com/uncategorized/javascript-for-2136/</link>
		<comments>http://www.irandevelopers.com/uncategorized/javascript-for-2136/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 20:13:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/uncategorized/-2136/</guid>
		<description><![CDATA[حلقه های جاوا اسکریپت معمولا زمانی که شما کدی می نویسید ممکن است بخواهید یک بلاک یکسان از کد چند بار اجرا شود ، در این صورت به جای آوردن چندین خط جدید دز یک اسکریپت می توانید از حلقه برای اجرای یک وظیفه ی مثل آن استفاده کنید . در جاوا اسکریپت دو نوع [...]]]></description>
			<content:encoded><![CDATA[<h2 dir="rtl">حلقه های جاوا  اسکریپت</h2>
<p dir="rtl">معمولا زمانی که شما کدی  می نویسید ممکن است  بخواهید یک بلاک یکسان از کد چند بار  اجرا شود ، در این صورت به جای آوردن  چندین خط جدید دز یک اسکریپت می توانید از حلقه برای اجرای یک وظیفه ی مثل  آن استفاده کنید .</p>
<p dir="rtl">در جاوا اسکریپت دو نوع مختلف از حلقه ها وجود  دارد</p>
<p dir="rtl">
<strong>حلقه   : for</strong><strong> </strong> یک بلاک از کد را به تعداد مشخصی اجرا می  کند.<br />
<strong>حلقه</strong><strong>:  while</strong> یک بلاک از کد را تا  زمانیکه شرطی برقرار است اجرا می کند.</p>
<p dir="rtl">
<strong> حلقه : for</strong><br />
حلقه for  زمانی که شما می دانید که چند  بار یک اسکریپت باید اجرا شود استفاده می شود .</p>
<p dir="ltr">Syntax</p>
<pre>for (var=startvalue;var&lt;=endvalue;var=var+increment)
{
code to be executed
}</pre>
<p dir="rtl"><strong>مثال</strong>:<br />
مثال زیر برای یک حلقه با مقدار  ابتدایی i=0  تعریف شده است .حلقه تا زمانی که  iکوچکتر یا مساوی ۵ باشد ادامه پیدا  می کند . مقدار i با هر بار اجرای حلقه یک واحد افزایش می یابد.</p>
<p dir="rtl"><strong>توجه </strong>: مقدار  پارامتر اضافه شونده می تواند منفی باشد و &lt;=  می تواند هر عبارت مقایسه ای باشد.</p>
<p dir="ltr">Example</p>
<pre>&lt;html&gt;
&lt;body&gt;
&lt;script&gt;
var i=0;
for (i=0;i&lt;=5;i++)
{
document.write("The number is " + i);
document.write("&lt;br /&gt;");
}
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p><strong>حلقه while :</strong><br />
این حلقه در مبحث بعدی مطرح  خواهد شد .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/uncategorized/javascript-for-2136/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>توابع جاوا اسکریپت JavaScript functions</title>
		<link>http://www.irandevelopers.com/programming/javascript/javascript-functions-2135/</link>
		<comments>http://www.irandevelopers.com/programming/javascript/javascript-functions-2135/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 20:11:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java Script]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/uncategorized/-2135/</guid>
		<description><![CDATA[برای جلوگیری از اجرای یک قطعه کد توسط مرورگر می توانید آن را در یک تابع قرار دهید. یک تابع شامل کدهایی است که زمانی که یک رویداد خاص رخ دهد و یا تابع فراخوانی شود اجرا می شود. شما ممکن است یک تابع را در هر جایی از صفحه فراخوانی کنید ( یا حتی [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl">
برای جلوگیری از اجرای یک قطعه کد توسط مرورگر می توانید  آن را در یک تابع قرار دهید.<br />
یک تابع شامل کدهایی است که زمانی که یک  رویداد خاص رخ دهد و یا تابع فراخوانی شود اجرا می شود.<br />
شما ممکن است یک  تابع را در هر جایی از صفحه فراخوانی کنید ( یا حتی در صفحات دیگر اگر  تابع در داخل فایل با پیوند &#8220;.js&#8221;  جا سازی شده باشد.)<br />
تابع در هر دو  قسمت &#8220;head&#8221;  و یا &#8220;body&#8221; می تواند تعریف شود.<br />
اگر چه برای اطمینان از  اینکه قبل از فراخوانی ، آن تابع توسط مرورگر خوانده و بارگذاری شده است می  توانید آن را در قسمت &lt; head &gt;  قرار دهید.</p>
<h2 dir="rtl">چگونه یک تابع را تعریف کنیم</h2>
<p dir="rtl">دستورالعمل برای ایجاد تابع:</p>
<pre>function <em>functionname</em>(<em>var1,var2,...,varX</em>)
{<em>
some code</em>
}</pre>
<p dir="rtl">
Var1,var2,… متغیرها و مقدارها را به تابع می فرستند} و {  آغاز و پایان یک تابع را تعیین می کنند.<br />
<strong>توجه:</strong> یک  تابع بدون پارامتر باید بعد از نام تابع شامل پرانتز () باشد.</p>
<pre>function functionname()
{
<em>some code</em>
}</pre>
<p dir="rtl">
<strong>توجه:</strong> حساس به حروف بزرگ / کوچک بودن در  جاوا اسکریپت را فراموش نکنید! کلمه ی  function  باید با حروف کوچک نوشته شود وگرنه پیغام خطا صادر می شود . اگرچه ما اسم تابع را برای فراخوانی باید دقیقا به همان شکلی که تعریف شده است بنویسیم.</p>
<h2 dir="rtl">مثالی از یک تابع در جاوا اسکریپت</h2>
<pre dir="ltr">&lt;html&gt;
&lt;head&gt;
&lt;script type="text/javascript"&gt;
    function displaymessage()
    {
       alert("Hello World!");
    }
&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;form&gt;
       &lt;input type="button" value="Click me!" onclick="displaymessage()" /&gt;
    &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p dir="rtl">اگر خط  alert(&#8220;Hello world!!&#8221;) در مثال بالا داخل تابع قرار  نگرفته بود ، این خط به محظ لود صفحه اجرا می شد. حالا قبل از اینکه کاربر  دکمه را فشار دهد اسکریپت اجرا نمی شود.<br />
ما باید یک رویداد onclick را  به دکمه برای اجرای تابع displaymessage() اضافه کنیم تا با کلیک بر روی  دکمه این تابع فراخوانی شود.<br />
نکات بیشتری در مورد رویدادهای جاوا  ایکریپت را در فصل رویدادها یاد خواهیم گرفت.</p>
<h2 dir="rtl">عبارت بازگشتی :</h2>
<p dir="rtl">عبارت بازگشتی برای تعیین مقدار بازگشتی تابع استفاده می شود .<br />
بنابراین  ، توابعی که مقدار بازگشتی دارند باید از این عبارت استفده نمایند.<br />
<strong><br />
مثال</strong><br />
تابع  زیر باید حاصلضرب دو تابع را برگرداند</p>
<pre>&lt;html&gt;
&lt;head&gt;
&lt;script type="text/javascript"&gt;
    function product(a,b)
    {
         return a*b;
    }
&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;script type="text/javascript"&gt;
         document.write(product(4,3));
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p dir="rtl">زمانی که شما تابع بالا را فراخوانی می کنید شما باید دو  پارامتر را به تابع بفرستید.</p>
<pre>p=product(2,3);</pre>
<p dir="rtl">مقدار بازگردانده شده از تابع ۶ است و این مقدار میتواند داخل  متغیر یا برای نمایش روی صفحه استفاده شود.</p>
<h2 dir="rtl">عمر متغیرهای جاوا اسکریپت</h2>
<p dir="rtl">زمانی که شما یک متغیر را داخل تابع اعلان می کنید ، متغیر  فقط داخل تابع می تواند مقدار بگیرد . زمانی که شما از تابع خارج می شوید  متغیر از بین می رود. به این متغیرها ، متغیرهای محلی می گویند. شما می  توانید چندین متغیر محلی با یک نام را در داخل <strong>توابع مختلف</strong> استفاده کنید . زیرا متغیرهای محلی <strong>فقط در داخل تابع</strong> شناخته شده اند.<br />
زمانی که شما یک متغیر را خارج از تابع تعریف می کنید،  همه ی توابع داخل آن صفحه آن را می پذیرند . عمر این متغیرها از زمانی که  تعریف می شوند شروع می شود و زمانی که صفحه بسته می شود پایان می یابد.</p>
<p dir="rtl">مترجم: فاطمه  سیفی</p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/javascript/javascript-functions-2135/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
