مفاهیم، نکته و ترفندهای جی اس - قسمت ۵ - فانکشن ها

لینک کانال بنده در یوتوب، عضویت شما در این کانال باعث امتنان است.توجه : ویدیو این گفتار را می توانید، در یوتوب مشاهده فرمایید.فانکشن یا تابع در جاوا اسکریپت مانند سایر زبان های برنامه نویسی مجموعه ای از کد یا قطعه کد است که از سایر کدها جدا و یا ایزوله جهت استفاده مجدد شده است و می تواند مقادیری به عنوان ورودی بگیرد و خروجی ایجاد نماید.function myFunction(){ console.log(&quotHello&quot); }تعریف تابع یا فانکشن به دو روش انجام می شود:روش اول ) فانکشن definition یا declaration اعلان تابع function declaration یعنی اعلان اینکه این تابع است و اگر صدا بشود قابل اجرا است.function foo (){ //function definition or function declaration or function statement console.log(&quotHello&quot) }روش دوم ) فانکش expression از آن جاییکه در جاوا اسکریپت تابع یک مقدار است و توابع در جی اس نوع خاصی از نوع مقدار آبجکت هستند، لذا می توان آن را به شکل زیر به یک متغییر تخصیص داد که تعریف به این صورت را فانکش expression می گویند.var f = function foo (){ //function expression console.log(&quotHello&quot) };توجه: فانکش در زبان های برنامه نویسی دیگر می توانند صرفا مقدار برگرداندبه مثال زیر توجه کنید، همانطور که متغییر foo یک مقدار به نام "Hello" دارد متغییر greeting یک مقدار یعنی یک فانکشن بنام فانکشن foo دارد که البته می توانید این فانکشن بدون نام باشد.var foo = &quotHello&quot var greeting = function foo (){ console.log(&quotHello&quot) }جهت اجرای فانکش می بایست نام آن را به صورت زیر صدا نماییم.myFunction(); //Hello توابع می توانند بدون نام یا anonymous function experssion باشند.var f = function (){ console.log(&quotHello&quot) } f(); جهت ارسال پارامتر به فانکشن نوع آنها را مانند سایر زبان‌های برنامه نویسی مشخص نمی نماییم و اگر یک پارامتر را ارسال نکنیم undefined به جای آن قرار داده می شود و منجر به خطا نمی‌گردد و اگر بیشتر از آرگومان ها دیتا ارسال شود، دیتا های اضافی در نظر گرفته نمی شود و به طبع منجر به خطا هم نمی گردد و اصطلاحا در جاوااسکریپت فانکشن ها قابل انعطاف هستند.function myFunction(name,familyName){ console.log(name,familyName); } myFunction(&quotali&quot); //&quotali&quot undefinedهمچینن هر فانکشنی می تواند مقادیری را برگرداند مثال زیر:function sayHi(name){ return &quotHello &quot + name } var value = sayHi(&quotAli&quot); console.log(value); اگر فانکش چیزی برنگرداند مقدار آن پیش فرض undefined است مثال زیرfunction sayHi(name){ } var value = sayHi(&quotAli&quot); console.log(value); //undefinedجاوا اسکریپت function declaration را به بالا منتقل می کند که به این کار hoisting می گویند و توجه کنید Hoisting برروی function declaration انجام می شود و برروی function expertion این کار انجام نمی شود.به مثال های ذیل دقت کنیدfoo(); //Hello Because Hoisting function foo (){ //function declaration console.log(&quotHello&quot) }f(); //Error f is not a function var f = function foo (){ //function expression console.log(&quotHello&quot) };بیشتر ترجیج داده می شود از function expression برای تابع استفاده شود.از آنجاییکه گفتم تابع یک مقدار است پس می توانیم مانند یک string به یک تابع دیگر آن را ارسال نماییم.var f = function (){ console.log(&quotHello&quot) } var exec = function(fn){ fn() console.log(fn); } exec(f);همانطور که گفتیم هر چیز که به متغییر می توانیم تخصیص بدهیم آن را به ویژگی های یک آبجکت می توان تخصیص داد لذا فانکشن را می توان به property آبجکت تخصیص داد، که همان متد در آبجکت استvar myObj={ testProp:true } myObj.myMethod = function(){ console.log(&quotfunction in object&quot) }; console.log(myObj) myObj.myMethod();لطفا برای سایر موارد مانند مفهوم کلمه کلیدی this و پارامتری ها پیش فرض در توابع به فیلم این گفتار در یوتوب مراجعه فرمایید.لینک کانال بنده در یوتوب، عضویت شما در این کانال باعث امتنان است. http://vrgl.ir/6xzRM http://vrgl.ir/Kwf7H http://vrgl.ir/XnhWj http://vrgl.ir/jyK4J