دوره مجازی جاوااسکریپت (جلسه 7): تعریف توابع دلخواه در جاوااسکریپت، نکات و ترفندها



visibility  
mode_comment   ۳۳

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

مطالب مطرح شده در این جلسه عبارتند از :

  • بحث در مورد عدم امکان تعریف دو تابع و نام های یکسان
  • متد های شی window و عدم نیاز به نام بردن خود شئ window برای استفاده از آن ها
  • رفع مشکل تابع print استفاده شده در جلسات گذشته
  • آشنایی با قابلیت refactor و تغیر نام سراسری متغیر ها و توابع در کل پروژه درون phpStorm
  • بیان نحوه برنامه نویسی بدون توابع و مشکلات عمده آن با ذکر مثال
  • مزیت های عمده استفاده از توابع در برنامه نویسی و ایجاد نظم و تقسیم بندی وظایف در کدها
  • نحوه تعریف تابع به صورت Function Declarations
  • ذکر نکات مهم در مورد توابع و قابلیت رفتار با آنها به صورت متغیر
  • Function Hoisting در جاوااسکریت و به بالا آوردن خودکار تعریف توابع
  • نحوه تعریف تابع به شکل Function Expressions
  • توابع ناشناس (anonymous functions) در جاوااسکریپت
  • توابع خود صدا زننده (Self-Invoking Functions)
  • صحبت در مورد پارامترهای توابع
  • نحوه انتساب مقدار پیشفرض برای پارامترها
  • نحوه دریافت تعداد مختفی از پارامترها در یک تابع و مدیریت و استفاده از پارامترها
  • توابع بازگشتی و نحوه کار آن ها
  • ذکر مثالی از پیاده سازی یک تابع به شکل بازگشتی
  • تمرین : ایجاد تغیر در تابع print پیشفرض جاوااسکریپت و کسب اجازه از کاربر برای چاپ صفحه
  • تمرین : تغیر تابع nicePrint برای چاپ همه نوع داده با قابلیت دریافت تعداد مختلفی از پارامترها
  • تمرین : نوشتن تابع به توان رساندن با استفاده از روش بازگشتی
  • تمرین : تفاوت بین call by reference و call by value در پاس دادن پارامترهای تابع ؟
  • پاسخ تمرین ها در جلسه 9 دوره داده شده است!
info توجه

این مطلب یک جلسه از آموزش جاوا اسکریپت - آموزش جی کوئری می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش جاوا اسکریپت - آموزش جی کوئری

comment دیدگاه کاربران

سلام اقای اوند من تو تمرین چاپ انوع داده ها مشکل داشتم ولی با توجه به فهم خودم اون کدو به این شکل دراوردم که برای object هم مطمعین نیستم

لقمان آوند

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

زهرا مقصودی

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

var origPrint = print;
print = function () {
var a = window.confirm(‘آیا مطمئن هستید؟’);
if (a == true) {
return origPrint();
} else
return;
}
اما وقتی متغیر origPrint رو به صورت محلی داخل تابع تعریف میکنم هر چقدر که از پنجره confirm ، اوکی رو میزنم باز پنجره confirm باز میشه تا اینکه کنسل رو بزنم ، ممنون میشم راهنمایی کنید دلیلش چیه و چرا اینطورمیشه

لقمان آوند

تعریف درون تابع اشتباهه اینجا. باعث ایجاد چرخه میشه. اگر توی تابع به صورت محلی تعریف کنید مقدار origPrint هم دقیقا میشه همون print که خودمون داریم تعریف می کنیم و وقتی کانفیرم رو ok کنید مجددا خود تابع صدا زده میشه و دوباره کانفیرم میاد!
باید قبل از اینکه تابع print رو تعریف کنید مقدار اصلی اون رو در متغیر دیگه نگه دارید!

313iman313

سلام من بخش توابع بازگشتی رو درست متوجه نشدم یعنی چجوری میشه ؟‌ اونجایی که میگین
factorial (n-1) الان فاکتوریل جاش چه عددی میشه ؟‌ و اونجا n ضربدر یه عدد میشه یا خیر دوباره تا بع فراخانی میشه و فقط از n یک مقدار کم میشه ؟‌ و اینکه اصلا از همه چی بگذریم که اخر باید ۱ return بشه چون این ضرب ها که در جایی ذخیره نمیشن فقط ضرب میشن و بر میگردونن و اون برگشته جایی ذخیره نمیشه تا وقتی که n برسه به ۱ و در هر صورت باید 1 بر گشت داده بشه من نمیدونم چجوری این بخشی فاکتوریل داره برنامه رو درست اجرا میکنه !؟!؟!؟؟!؟

لقمان آوند

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

Pezhman Heidary

با سلام و خسته نباشید خدمت شما،،،ما از چه سایتی و منبعی میتونیم درمورد این تمرینات اطلاعات کسب کنیم،مثلا تمرین اخر جلسه هفتم،درموردر …call value,پیدا کردنش برای من غیر ممکن بود مگر از سایت های خارجی که متاسفانه اصلا متوجه نمیشم!ویا تمرین توان ب صورت تابع بازگشتی،اگه ممکنه یه منبع معرفی کنید که ما بتونیم ازش کمک بگیریم،استاد.

لقمان آوند

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

ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.

1 2