دوره مجازی جاوااسکریپت (جلسه 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 بر گشت داده بشه من نمیدونم چجوری این بخشی فاکتوریل داره برنامه رو درست اجرا میکنه !؟!؟!؟؟!؟

لقمان آوند

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

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.
1 2