در Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±ÛÙ¾ØªØ ØªØ§Ø¨Ø¹ ÛÚ© âØ³Ø§Ø®ØªØ§Ø± جادÙÛÛ Ø²Ø¨Ø§Ùâ ÙÛØ³ØªØ بÙÚ©Ù ÛÚ© ÙÙØ¹ Ø®Ø§ØµÛ Ø§Ø² Ù ÙØ¯Ø§Ø± است.
سÛÙØªÚ©Ø³Û ک٠٠ا ÙØ¨Ùا Ø§Ø³ØªÙØ§Ø¯Ù کردÛÙ ÛÚ© Function Declaration ÙØ§Ù ÛØ¯Ù Ù ÛâØ´ÙØ¯:
function sayHi() {
alert( "Ø³ÙØ§Ù
" );
}
ÛÚ© سÛÙØªÚ©Ø³ دÛگر ÙÙ Ø¨Ø±Ø§Û Ø³Ø§Ø®Øª تابع ÙØ¬Ùد دارد Ú©Ù Function Expression ÙØ§Ù ÛØ¯Ù Ù ÛâØ´ÙØ¯.
اÛ٠سÛÙØªÚ©Ø³ ب٠٠ا اÛ٠ا٠کا٠را Ù ÛâØ¯ÙØ¯ ک٠بÛÙ ÙØ± Ø¹Ø¨Ø§Ø±ØªÛ ÛÚ© تابع Ø¬Ø¯ÛØ¯ بسازÛÙ .
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
let sayHi = function() {
alert( "Ø³ÙØ§Ù
" );
};
اÛÙØ¬Ø§ Ù
ÛâØªÙØ§ÙÛÙ
Ù
ØªØºÛØ± sayHi را ببÛÙÛÙ
Ú©Ù Ù
ÙØ¯Ø§Ø±Û را Ø¯Ø±ÛØ§Ùت Ù
ÛâÚ©ÙØ¯Ø تابع Ø¬Ø¯ÛØ¯Ø Ú©Ù Ø¨Ù ØµÙØ±Øª function() { alert("Hello"); } ساخت٠شد٠است.
ÚÙÙ Ø§ÛØ¬Ø§Ø¯ تابع با زÙ
ÛÙÙ (context) عبارت Ù
ÙØ¯Ø§Ø±Ø¯ÙÛ (سÙ
ت راست =) رخ Ù
ÛâØ¯ÙØ¯Ø اÛÙ ÛÚ© Function Expression است.
ÙØ·Ùا در ÙØ¸Ø± Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛØ¯Ø ÙÛÚ Ø§Ø³Ù
Û Ø¨Ø¹Ø¯ از Ú©ÙÙ
Ù Ú©ÙÛØ¯Û function ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯. ØØ°Ù کرد٠اسÙ
Ø¨Ø±Ø§Û Function ExpressionÙØ§ Ù
جاز است.
اÛÙØ¬Ø§ Ù
ا Ø¨ÙØ§ÙاصÙ٠آ٠را ب٠Ù
ØªØºÛØ± اختصاص Ù
ÛâØ¯ÙÛÙ
پس Ù
عÙÛ Ø§ÛÙ ÙØ·Ø¹ÙâÙØ§Û کد Ûکسا٠است: Â«ØªØ§Ø¨Ø¹Û Ø¨Ø³Ø§Ø² ٠آ٠را درÙÙ Ù
ØªØºÛØ± sayHi ÙØ±Ø§Ø± بدÙ».
در Ù ÙÙØ¹ÛتâÙØ§Û Ù¾ÛØ´Ø±ÙتÙâØªØ±Ø Ú©Ù Ø¨Ø¹Ø¯Ø§ ب٠آÙâÙØ§ Ù ÛâØ±Ø³ÛÙ Ø ÛÚ© تابع ٠٠ک٠است Ø§ÛØ¬Ø§Ø¯ Ù Ø¨ÙØ§ÙاصÙÙ ÙØ±Ø§Ø®ÙاÙÛ Ø´ÙØ¯ ÛØ§ Ø¨Ø±Ø§Û Ø§ÛÙک٠بعدا اجرا Ø´ÙØ¯ Ø¨Ø±ÙØ§Ù ÙâØ±ÛØ²Û ØµÙØ±Øª Ú¯ÛØ±Ø¯ ٠جاÛÛ Ø°Ø®ÛØ±Ù ÙØ´ÙØ¯Ø Ø§Ø² اÛÙ Ø±Ù ÙØ§Ø´Ùاس Ø¨Ù Ø§ÙØ¯.
تابع ÛÚ© Ù ÙØ¯Ø§Ø± است
Ø¨ÛØ§ÛÛØ¯ تکرار Ú©ÙÛÙ
: Ù
ÙÙ
ÙÛØ³Øª ک٠تابع ÚÚ¯ÙÙÙ Ø³Ø§Ø®ØªÙ Ø´Ø¯Ù Ø§Ø³ØªØ ÛÚ© تابع ÙÙ
ÛØ´Ù ÛÚ© Ù
ÙØ¯Ø§Ø± است. ÙØ± د٠Ù
Ø«Ø§Ù Ø¨Ø§ÙØ§ ØªØ§Ø¨Ø¹Û Ø±Ø§ درÙÙ Ù
ØªØºÛØ± sayHi Ø°Ø®ÛØ±Ù Ù
ÛâÚ©ÙÙØ¯.
Ù
ا ØØªÛ Ù
ÛâØªÙØ§ÙÛÙ
Ø¢Ù Ù
ÙØ¯Ø§Ø± را با Ø§Ø³ØªÙØ§Ø¯Ù از alert ÚØ§Ù¾ Ú©ÙÛÙ
:
function sayHi() {
alert( "Ø³ÙØ§Ù
" );
}
alert( sayHi ); // کد تابع را ÙØ´Ø§Ù Ù
ÛâØ¯ÙØ¯
ÙØ·Ùا در ÙØ¸Ø± Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛØ¯ ک٠آخرÛ٠خط تابع را اجرا ÙÙ
ÛâÚ©ÙØ¯Ø ÚÙÙ ÙÛÚ Ù¾Ø±Ø§ÙØªØ²Û بعد از sayHi ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯. زباÙâÙØ§Û Ø¨Ø±ÙØ§Ù
Ù ÙÙÛØ³ÛâØ§Û ÙØ¬Ùد Ø¯Ø§Ø±ÙØ¯ Ú©Ù ÙØ± اشارÙâØ§Û Ø¨Ù Ø§Ø³Ù
تابع سبب اجرا شد٠آ٠Ù
ÛâØ´ÙØ¯Ø اÙ
ا Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت اÛÙØ·Ùر ÙÛØ³Øª.
در Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±ÛÙ¾ØªØ ØªØ§Ø¨Ø¹ ÛÚ© Ù ÙØ¯Ø§Ø± Ø§Ø³ØªØ Ù¾Ø³ ٠ا Ù ÛâØªÙØ§ÙÛ٠٠ث٠ÛÚ© Ù ÙØ¯Ø§Ø± با Ø¢Ù Ø±ÙØªØ§Ø± Ú©ÙÛÙ . کد Ø¨Ø§ÙØ§ ÙÙ Ø§ÛØ´ رشتÙâØ§Û Ø¢Ù Ø±Ø§ Ø§ÙØ¬Ø§Ù Ù ÛâØ¯ÙØ¯Ø Ú©Ù Ù٠ا٠کد Ù ÙØ¨Ø¹ است.
Ù
سÙÙ
Ø§Ø ØªØ§Ø¨Ø¹ ÛÚ© Ù
ÙØ¯Ø§Ø± خاص Ø§Ø³ØªØ Ø¨Ù ÙÙ
Û٠دÙÛÙ Ù
ا Ù
ÛâØªÙØ§ÙÛÙ
آ٠را Ù
ث٠sayHi() صدا بزÙÛÙ
.
ا٠ا تابع ÙÙ ÚÙØ§Ù ÛÚ© Ù ÙØ¯Ø§Ø± است. پس ٠ا Ù ÛâØªÙØ§ÙÛ٠با آ٠٠ث٠اÙÙØ§Ø¹ دÛگر Ù ÙØ¯Ø§Ø±Ùا کار Ú©ÙÛÙ .
٠ا Ù ÛâØªÙØ§ÙÛÙ ÛÚ© تابع را در ÛÚ© Ù ØªØºÛØ± دÛگر Ú©Ù¾Û Ú©ÙÛÙ :
function sayHi() { // (1) ساختÙ
alert( "Ø³ÙØ§Ù
" );
}
let func = sayHi; // (2) Ú©Ù¾Û Ú©Ø±Ø¯Ù
func(); // Ø³ÙØ§Ù
// (3) Ú©Ù¾Û Ø±Ø§ اجرا Ù
ÛâÚ©ÙÛÙ
(کار Ù
ÛâÚ©ÙØ¯!)
sayHi(); // Ø³ÙØ§Ù
// ÙÙÙØ²Ù
کار Ù
ÛâÚ©ÙØ¯ (ÚØ±Ø§ ÙÚ©ÙØ¯)
ÚÛØ²Û Ú©Ù Ø¨Ø§ÙØ§ Ø§ØªÙØ§Ù Ù ÛâØ§ÙØªØ¯ با جزÛÛØ§Øª اÛÙØ¬Ø§ ÙØ³Øª:
- Function Declaration
(1)تابع را Ù ÛâØ³Ø§Ø²Ø¯ ٠آ٠را Ø¯Ø§Ø®Ù Ù ØªØºÛØ±sayHiÙØ±Ø§Ø± Ù ÛâØ¯ÙØ¯. - خط
(2)آ٠را Ø¯Ø§Ø®Ù Ù ØªØºÛØ±funcÚ©Ù¾Û Ù ÛâÚ©ÙØ¯. ÙØ·Ùا Ø¯ÙØ¨Ø§Ø±Ù در ÙØ¸Ø± Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛØ¯: ÙÛÚ Ù¾Ø±Ø§ÙØªØ²Û بعد ازsayHiÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯. اگر ÙØ¬Ùد Ø¯Ø§Ø´ØªØ Ø³Ù¾Ø³func = sayHi()ÙØªÛج٠صدا زدÙsayHi()را درfuncÙ ÛâÙÙØ´ØªØ ÙÙ Ø®ÙØ¯ تابعsayHi. - ØØ§Ùا تابع Ù
ÛâØªÙØ§Ùد با
sayHi()Ùfunc()صدا Ø²Ø¯Ù Ø´ÙØ¯.
ÙÙ
ÚÙÛÙ Ù
ÛâØªÙØ§ÙستÛÙ
از ÛÚ© Function Expression Ø¨Ø±Ø§Û ØªØ¹Ø±ÛÙ sayHi در خط اÙÙØ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
:
let sayHi = function() { // (1) Ø§ÛØ¬Ø§Ø¯
alert( "Ø³ÙØ§Ù
" );
};
let func = sayHi;
// ...
ÙÙ Ù ÚÛØ² ب٠Ù٠ا٠شک٠کار Ø®ÙØ§Ùد کرد.
Ø´Ø§ÛØ¯ Ø¨Ø±Ø§Û Ø´Ù
ا Ø³ÙØ§Ù Ø¨Ø§Ø´Ø¯Ø ÚØ±Ø§ Function Expression در Ø§ÙØªÙا ÙÙØ·Ù ÙÛØ±Ú¯ÙÙ ; Ø¯Ø§Ø±Ø¯Ø Ø§Ù
ا Function Declaration ÙØ¯Ø§Ø±Ø¯:
function sayHi() {
// ...
}
let sayHi = function() {
// ...
};
Ø¬ÙØ§Ø¨ ساد٠است: ÛÚ© Function Expression Ø¨Ù ØµÙØ±Øª function(â¦) {â¦}Ø Ø¯Ø± Ø¯Ø§Ø®Ù Ø¯Ø³ØªÙØ± Ù
ÙØ¯Ø§Ø±Ø¯ÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâØ´ÙØ¯: let sayHi = ...;. ÙÙØ·Ù ÙÛØ±Ú¯ÙÙ ; در Ø§ÙØªÙØ§Û Ø¯Ø³ØªÙØ± Ù¾ÛØ´ÙÙØ§Ø¯ Ù
ÛâØ´ÙØ¯Ø اÛÙ Ø¹ÙØ§Ù
ت جزء سÛÙØªÚ©Ø³ تابع ÙÛØ³Øª.
ÙÙØ·Ù ÙÛØ±Ú¯ÙÙ Ø¨Ø±Ø§Û Ù
ÙØ¯Ø§Ø±Ø¯ÙÛ Ø³Ø§Ø¯ÙâØªØ± ÙØ¬Ùد دارد Ù
ث٠let sayHi = 5; Ù ÙÙ
ÚÙÛÙ Ø¨Ø±Ø§Û Ù
ÙØ¯Ø§Ø±Ø¯ÙÛ ØªØ§Ø¨Ø¹ ÙÛØ² ÙØ¬Ùد دارد.
تابعâÙØ§Û Callback
Ø¨ÛØ§ÛÛØ¯ ب٠٠ثاÙâÙØ§Û Ø¨ÛØ´ØªØ±Û Ø¯Ø±Ø¨Ø§Ø±Ù Ø§Ø³ØªÙØ§Ø¯Ù کرد٠از تابع ÙØ§ ب٠عÙÙØ§Ù Ù ÙØ¯Ø§Ø± Ù Ø§Ø³ØªÙØ§Ø¯Ù کرد٠از function expressions Ùگا٠کÙÛÙ .
Ù
ا ÛÚ© تابع ask(question, yes, no) با س٠پاراÙ
تر Ù
ÛâÙÙÛØ³ÛÙ
:
question- Ù ØªÙ Ø³ÙØ§Ù
yes- ØªØ§Ø¨Ø¹Û Ø¨Ø±Ø§Û Ø§Ø¬Ø±Ø§ کرد٠اگر Ø¬ÙØ§Ø¨ âYesâ Ø¨Ø§Ø´Ø¯
no- ØªØ§Ø¨Ø¹Û Ø¨Ø±Ø§Û Ø§Ø¬Ø±Ø§ کرد٠اگر Ø¬ÙØ§Ø¨ âNoâ Ø¨Ø§Ø´Ø¯
تابع Ø¨Ø§ÛØ¯ question را Ø¨Ù¾Ø±Ø³Ø¯Ø Ù Ø¨Ø± اساس Ø¬ÙØ§Ø¨ Ú©Ø§Ø±Ø¨Ø±Ø yes() ÛØ§ no() را صدا Ø¨Ø²ÙØ¯:
function ask(question, yes, no) {
if (confirm(question)) yes()
else no();
}
function showOk() {
alert( "Ø´Ù
ا Ù
ÙØ§ÙÙØª Ú©Ø±Ø¯ÛØ¯." );
}
function showCancel() {
alert( "Ø´Ù
ا اجرا شد٠را ÙØºÙ Ú©Ø±Ø¯ÛØ¯." );
}
// ÙØÙÙ Ø§Ø³ØªÙØ§Ø¯Ù: تابعâÙØ§Û showOkØ showCancel ب٠عÙÙØ§Ù آرگÙÙ
ا٠ب٠ask داد٠شدÙâØ§ÙØ¯
ask("Ø¢ÛØ§ Ù
ÙØ§ÙÙ ÙØ³ØªÛدØ", showOk, showCancel);
در عÙ
ÙØ ÚÙÛ٠تابع ÙØ§ÛÛ Ø¨Ø³ÛØ§Ø± Ù
ÙÛØ¯ ÙØ³ØªÙد. ØªÙØ§Ùت اصÙÛ Ø¨ÛÙ ÛÚ© ask در Ø²ÙØ¯Ú¯Û ÙØ§ÙØ¹Û Ù Ù
Ø«Ø§Ù Ø¨Ø§ÙØ§ در اÛ٠است ک٠تابعâÙØ§ در Ø²ÙØ¯Ú¯Û ÙØ§ÙØ¹Û Ø§Ø² راÙâÙØ§Û Ù¾ÛÚÛØ¯ÙâØªØ±Û ÙØ³Ø¨Øª ب٠ÛÚ© confirm Ø³Ø§Ø¯Ù Ø¨Ø±Ø§Û ØªØ¹Ø§Ù
٠با کاربر Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâÚ©ÙÙØ¯. در Ù
Ø±ÙØ±Ú¯Ø±Ø ÚÙÛ٠تابعâÙØ§ÛÛ Ù
عÙ
ÙÙØ§ ÛÚ© Ù¾ÙÚØ±Ù پرسش Ø²ÛØ¨Ø§ را Ø§ÛØ¬Ø§Ø¯ Ù
ÛâÚ©ÙÙØ¯. اÙ
ا Ø¢Ù ÛÚ© داستا٠دÛگر است.
آرگÙÙ
اÙâÙØ§Û showOk Ù showCancel داخ٠ask callback functions ÛØ§ ÙÙØ· callbacks ÙØ§Ù
ÛØ¯Ù Ù
ÛâØ´ÙÙØ¯.
Ø§ÛØ¯Ù اÛÙØ·Ùر است Ú©Ù Ù
ا ÛÚ© تابع را Ù
ÛâØ¯ÙÛÙ
٠از آ٠تÙÙØ¹ دارÛÙ
ک٠بعدا اگر ÙÛØ§Ø² شد âØ¯ÙØ¨Ø§Ø±Ù صدا Ø²Ø¯Ù Ø´ÙØ¯â. در Ù
ÙØ±Ø¯ Ù
Ø§Ø showOk تبدÛ٠ب٠callback Ø¨Ø±Ø§Û Ø¬ÙØ§Ø¨ âyesâ Ù
ÛâØ´ÙØ¯Ø Ù showCancel Ø¨Ø±Ø§Û ÚÙØ§Ø¨ ânoâ.
٠ا Ù Û ØªÙØ§ÙÛ٠از Function Expressions Ø¨Ø±Ø§Û ÙÙØ´ØªÙ Ù٠ا٠تابع Ø¨Ù ØµÙØ±Øª Ø¨Ø³ÛØ§Ø± Ú©ÙØªØ§ÙâØªØ± Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ :
function ask(question, yes, no) {
if (confirm(question)) yes()
else no();
}
ask(
"Ø¢ÛØ§ Ù
ÙØ§ÙÙ ÙØ³ØªÛدØ",
function() { alert("Ø´Ù
ا Ù
ÙØ§ÙÙØª Ú©Ø±Ø¯ÛØ¯."); },
function() { alert("Ø´Ù
ا اجرا شد٠را ÙØºÙ Ú©Ø±Ø¯ÛØ¯."); }
);
اÛÙØ¬Ø§Ø تابعâÙØ§ دÙÛÙØ§ درÙ٠صدا زد٠ask(...) تعرÛÙ Ø´Ø¯Ù Ø§ÙØ¯. Ø¢ÙÙØ§ ÙÛÚ Ø§Ø³Ù
Û ÙØ¯Ø§Ø±ÙØ¯Ø Ù Ø¨ÙØ§Ø¨Ø±Ø§ÛÙ anonymous ÙØ§Ù
ÛØ¯Ù Ù
Û Ø´ÙØ¯. ÚÙÛ٠تابع ÙØ§ÛÛ Ø¨ÛØ±Ù٠از ask ÙØ§Ø¨Ù Ø¯Ø³ØªØ±Ø³Û ÙÛØ³ØªÙد (ÚÙ٠آÙÙØ§ ب٠Ù
ØªØºÛØ±Û ØªØ®ØµÛØµ Ø¯Ø§Ø¯Ù ÙØ´Ø¯Ù Ø§ÙØ¯)Ø Ø§Ù
ا اÛÙ ÚÛØ²Û است Ú©Ù Ù
ا اÛÙØ¬Ø§ Ù
ÛâØ®ÙØ§ÙÛÙ
.
ÚÙÛÙ Ú©Ø¯Û Ø¯Ø± اسکرÛپتâÙØ§Û ٠ا Ø¨Ù Ø·ÙØ± Ø·Ø¨ÛØ¹Û ÙÙ Ø§ÛØ§Ù Ù Û Ø´ÙÙØ¯Ø اÛ٠در ذات Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت است.
Ù ÙØ¯Ø§Ø±ÙØ§Û Ù Ø¹Ù ÙÙÛ Ù Ø«Ù Ø±Ø´ØªÙâÙØ§ ÛØ§ Ø¹Ø¯Ø¯ÙØ§ داد٠را ÙÙ Ø§ÛØ´ Ù ÛâØ¯ÙÙØ¯.
ÛÚ© تابع Ù ÛâØªÙØ§Ùد ب٠عÙÙØ§Ù ÛÚ© ع٠٠درک Ø´ÙØ¯.
٠ا Ù ÛâØªÙØ§ÙÛ٠آ٠را بÛÙ Ù ØªØºÛØ±Ùا رد ٠بد٠کÙÛÙ Ù ÙØ± Ø²Ù Ø§Ù Ú©Ù Ø¨Ø®ÙØ§ÙÛ٠اجرا Ú©ÙÛÙ .
Ø§Ø¹ÙØ§Ù تابع Expression در Ù ÙØ§Ø¨Ù تابع Declaration
Ø¨ÛØ§ÛÛØ¯ ØªÙØ§ÙتâÙØ§Û Ú©ÙÛØ¯Û بÛÙ Function Declarations Ù Expressions را ÙØ±Ù ÙÙ Ø¨ÙØ¯Û Ú©ÙÛÙ .
اÙÙØ سÛÙØªÚ©Ø³: ÚÚ¯ÙÙ٠داخ٠کد بÛ٠آÙÙØ§ ÙØ±Ù ÙØ§Ø¦Ù Ø´ÙÛÙ .
-
Function Declaration: ÛÚ© تابع Ø§Ø³ØªØ Ú©Ù Ø¨Ù Ø¹ÙÙØ§Ù ÛÚ© Ø¯Ø³ØªÙØ± Ø¬Ø¯Ø§Ø Ø¯Ø± کد اصÙÛ ØªØ¹Ø±ÛÙ Ù ÛâØ´ÙØ¯.
// Function Declaration function sum(a, b) { return a + b; } -
Function Expression: ÛÚ© تابع Ø§Ø³ØªØ Ú©Ù Ø¯Ø± داخ٠ÛÚ© عبارت ÛØ§ داخ٠ÛÚ© ساختار سÛÙØªÚ©Ø³ دÛگر ساخت٠٠ÛâØ´ÙØ¯. اÛÙØ¬Ø§Ø تابع س٠ت راست âØ¹Ø¨Ø§Ø±Øª ØªØ®ØµÛØµ دادÙâ
=ساخت٠شد٠است.// Function Expression let sum = function(a, b) { return a + b; };
ØªÙØ§ÙتâÙØ§Û ÙØ§Ù ØØ³Ùس Ø¨ÛØ´ØªØ± ز٠اÙÛ Ø§ÛØ¬Ø§Ø¯ Ù ÛâØ´ÙÙØ¯ Ú©Ù ÛÚ© تابع ØªÙØ³Ø· Ù ÙØªÙر Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت ساخت٠٠ÛâØ´ÙØ¯.
ÛÚ© Function Expression ز٠اÙÛ Ø³Ø§Ø®ØªÙ Ù ÛâØ´ÙØ¯ ک٠اجرا شد٠ب٠آ٠٠ÛâØ±Ø³Ø¯ Ù ÙÙØ· از ÙÙ Ø§Ù ÙØØ¸Ù ÙØ§Ø¨Ù Ø§Ø³ØªÙØ§Ø¯Ù است.
Ø¨ÙØ§ÙاصÙÙ Ú©Ù Ø¬Ø±ÛØ§Ù اجرا شد٠ب٠سÙ
ت راست ØªØ®ØµÛØµ داد٠let sum = function... برسد â Ø¯ Ø¨Ø±Ù Ú©Ù Ø±ÙØªÛÙ
Ø ØªØ§Ø¨Ø¹ از Ø¢Ù ÙØØ¸Ù Ø³Ø§Ø®ØªÙ Ø´Ø¯Ù Ù Ù
ÛâØªÙØ§Ùد Ø§Ø³ØªÙØ§Ø¯Ù Ø´ÙØ¯ (ØªØ®ØµÛØµ Ø¯Ø§Ø¯Ù Ø´ÙØ¯Ø صدا Ø²Ø¯Ù Ø´ÙØ¯Ø Ùâ¦).
Function Declarations Ù ØªÙØ§Ùت ÙØ³ØªÙد.
ÛÚ© Function Declaration Ù ÛâØªÙØ§Ùد Ø²ÙØ¯ØªØ± از ز٠اÙÛ Ú©Ù ØªØ¹Ø±Û٠شد٠باشد صدا Ø´Ø¯Ù Ø´ÙØ¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§ÙØ ÛÚ© Function Declaration Ø³Ø±Ø§Ø³Ø±Û Ø¯Ø§Ø®Ù Ú©Ù Ø§Ø³Ú©Ø±Ûپت ÙØ§Ø¨Ù رÙÛØª Ø§Ø³ØªØ ÙÛÚ ÙØ±ÙÛ ÙØ¯Ø§Ø±Ø¯ ک٠کجا باشد.
اÛ٠ب٠دÙÛ٠اÙÚ¯ÙØ±Ûت٠âÙØ§Û داخÙÛ Ø§Ø³Øª. ز٠اÙÛ Ú©Ù Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت Ø¨Ø±Ø§Û Ø§Ø¬Ø±Ø§Û Ø§Ø³Ú©Ø±Ûپت آ٠اد٠٠ÛâØ´ÙØ¯Ø اÙÙ Ø¨Ù Ø¯ÙØ¨Ø§Ù Function DeclarationÙØ§Û Ø³Ø±Ø§Ø³Ø±Û Ù Ûâگردد ٠تابعâÙØ§ را Ù ÛâØ³Ø§Ø²Ø¯. ٠ا Ù ÛâØªÙØ§ÙÛ٠ب٠عÙÙØ§Ù ÛÚ© â٠رØÙÙ Ù ÙØ¯Ø§Ø±Ø¯ÙÛ Ø§ÙÙÛÙâ Ø¨Ù Ø¢Ù Ùکر Ú©ÙÛÙ .
٠بعد از اÛÙÚ©Ù ÙÙ Ù Function Declarations پردازش Ø´Ø¯ÙØ¯Ø کد اجرا Ù ÛâØ´ÙØ¯. پس ب٠اÛ٠تابعâÙØ§ Ø¯Ø³ØªØ±Ø³Û Ø¯Ø§Ø±Ø¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§ÙØ اÛ٠کار Ù ÛâÚ©ÙØ¯:
sayHi("John"); // Ø³ÙØ§Ù
Ø John
function sayHi(name) {
alert( `Ø³ÙØ§Ù
Ø ${name}` );
}
Function Declaration sayHi زÙ
اÙÛ Ú©Ù Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت Ø¨Ø±Ø§Û Ø´Ø±ÙØ¹ اسکرÛپت در ØØ§Ù Ø¢Ù
اد٠شد٠است ساخت٠Ù
ÛâØ´ÙØ¯ Ù ÙØ±Ø¬Ø§ÛÛ Ø¯Ø§Ø®Ù Ø¢Ù ÙØ§Ø¨Ù رÙÛØª است.
â¦Ø§Ú¯Ø± اÛÙ ÛÚ© Function Expression Ø¨ÙØ¯Ø سپس کار ÙÙ Ûâکرد:
sayHi("John"); // Ø§Ø±ÙØ±!
let sayHi = function(name) { // (*) دÛگر جادÙÛÛ ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯
alert( `Ø³ÙØ§Ù
Ø ${name}` );
};
Function Expressions زÙ
اÙÛ Ú©Ù Ø§Ø¬Ø±Ø§ شد٠ب٠آÙÙØ§ Ù
ÛâØ±Ø³Ø¯ ساخت٠Ù
ÛâØ´ÙÙØ¯. اÛÙ ÙÙØ· در خط (*) Ø§ØªÙØ§Ù Ù
ÛâØ§ÙØªØ¯. Ø®ÛÙÛ Ø¯ÛØ± است.
ÛÚ©Û Ø¯Ûگر از ÙÛÚÚ¯ÛâÙØ§Û Function Declaration ÙÛÚÚ¯Û block scope Ø¢ÙÙØ§ است.
در ØØ§Ùت Ø³Ø®ØªÚ¯ÛØ±Ø§ÙÙ(strict mode)Ø Ø²Ù Ø§ÙÛ Ú©Ù ÛÚ© Function Declaration داخ٠ÛÚ© بÙÙÚ© کد Ø§Ø³ØªØ ÙÙ Ù Ø¬Ø§Û Ø¢Ù Ø¨ÙÙÚ© ÙØ§Ø¨Ù رÙÛØª است. ا٠ا Ù٠خارج از Ø¢Ù.
Ø¨Ø±Ø§Û Ù
Ø«Ø§ÙØ Ø¨ÛØ§ÛÛØ¯ ØªØµÙØ± Ú©ÙÛÙ
Ú©Ù Ù
ÛâØ®ÙØ§ÙÛÙ
ÛÚ© تابع welcome() تعرÛÙ Ú©ÙÛÙ
ک٠ب٠Ù
ØªØºÛØ± age Ø¨Ø³ØªÚ¯Û Ø¯Ø§Ø±Ø¯ ک٠آ٠را زÙ
ا٠اجرا Ø¯Ø±ÛØ§Ùت Ù
ÛâÚ©ÙÛÙ
. ٠سپس Ù
ÛâØ®ÙØ§ÙÛÙ
از آ٠بعدا Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
.
اگر ٠ا از Function Declaration Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ Ø Ø¢Ù Ø·ÙØ± ک٠در ÙØ¸Ø± دارÛ٠کار ÙÙ ÛâÚ©ÙØ¯:
let age = prompt("س٠شÙ
ا ÚÙØ¯Ø± استØ", 18);
// بر اساس شرط ÛÚ© تابع تعرÛÙ Ú©Ù
if (age < 18) {
function welcome() {
alert("Ø³ÙØ§Ù
!");
}
} else {
function welcome() {
alert("Ø¯Ø±ÙØ¯!");
}
}
// ...بعدا از Ø¢Ù Ø§Ø³ØªÙØ§Ø¯Ù Ú©Ù
welcome(); // Ø§Ø±ÙØ±: welcome تعرÛÙ ÙØ´Ø¯Ù است
دÙÛ٠آ٠اÛ٠است Ú©Ù ÛÚ© Function Declaration ÙÙØ· داخ٠بÙÙÚ© Ú©Ø¯Û Ú©Ù Ø¯Ø§Ø®Ù Ø¢Ù Ù Ø³ØªÙØ± است ÙØ§Ø¨Ù رÙÛØª است.
اÛÙØ¬Ø§ ÛÚ© ٠ثا٠دÛگر دارÛÙ :
let age = 16; // 16 را ب٠عÙÙØ§Ù ÛÚ© Ù
Ø«Ø§Ù Ø¯Ø±ÛØ§Ùت Ú©ÙÛØ¯
if (age < 18) {
welcome(); // \ (اجرا Ù
ÛâØ´ÙØ¯)
// |
function welcome() { // |
alert("Ø³ÙØ§Ù
!"); // | Function Declaration در دسترس است
} // | ÙØ±Ø¬Ø§ÛÛ Ø§Ø² بÙÙÚ©Û Ú©Ù Ø¯Ø§Ø®Ù Ø¢Ù ØªØ¹Ø±Û٠شد٠است
// |
welcome(); // / (اجرا Ù
ÛâØ´ÙØ¯)
} else {
function welcome() {
alert("Ø¯Ø±ÙØ¯!");
}
}
// اÛÙØ¬Ø§ Ù
ا Ø¨ÛØ±Ù٠از Ø¢Ú©ÙÙØ§Ø¯Ùا ÙØ³ØªÛÙ
Ø
// پس Ù
ا ÙÙ
ÛâØªÙØ§ÙÛÙ
Function DeclarationÙØ§ÛÛ Ú©Ù Ø¯Ø§Ø®Ù Ø¢ÙÙØ§ ساخت٠شدÙâØ§ÙØ¯ را رÙÛØª Ú©ÙÛÙ
.
welcome(); // Ø§Ø±ÙØ±: welcome تعرÛÙ ÙØ´Ø¯Ù است
Ù
ا ÚÙ Ú©Ø§Ø±Û Ù
ÛâØªÙØ§ÙÛÙ
Ø§ÙØ¬Ø§Ù
دÙÛÙ
تا welcome را Ø¨ÛØ±Ù٠از if ÙØ§Ø¨Ù رÙÛØª Ú©ÙÛÙ
Ø
رÙÛکرد درست Ù
ÛâØªÙØ§Ùد اÛ٠باشد ک٠از Function Expression Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
Ù welcome را ب٠Ù
ØªØºÛØ±Û ØªØ®ØµÛØµ بدÙÛÙ
ک٠خارج از if تعرÛ٠شد٠باشد Ù ÙØ§Ø¨Ù رÙÛØª باشد.
اÛ٠کد Ø¨Ù Ø·ÙØ±Û ک٠در ÙØ¸Ø± دارÛ٠کار Ù ÛâÚ©ÙØ¯:
let age = prompt("س٠شÙ
ا ÚÙØ¯Ø± استØ", 18);
let welcome;
if (age < 18) {
welcome = function() {
alert("Ø³ÙØ§Ù
!");
};
} else {
welcome = function() {
alert("Ø¯Ø±ÙØ¯!");
};
}
welcome(); // Ø§ÙØ§Ù درست است
ÛØ§ ØØªÛ Ù
ا Ù
ÛâØªÙØ§ÙÛÙ
آ٠را با Ø§Ø³ØªÙØ§Ø¯Ù از عÙ
Ùگر Ø¹ÙØ§Ù
ت Ø³ÙØ§Ù ? سادÙâØªØ± Ú©ÙÛÙ
:
let age = prompt("س٠شÙ
ا ÚÙØ¯Ø± استØ", 18);
let welcome = (age < 18) ?
function() { alert("Ø³ÙØ§Ù
!"); } :
function() { alert("Ø¯Ø±ÙØ¯!"); };
welcome(); // Ø§ÙØ§Ù درست است
ب٠عÙÙØ§Ù ÛÚ© ÙØ§Ø¹Ø¯Ù Ú©ÙÛØ ز٠اÙÛ Ú©Ù Ù Ø§ ÙÛØ§Ø² ب٠تعرÛÙ ÛÚ© تابع دارÛÙ Ø Ø§ÙÙÛÙ ÚÛØ²Û Ú©Ù Ø¨Ø§ÛØ¯ سراغ آ٠برÙÛ٠سÛÙØªÚ©Ø³ Function Declaration است. آ٠ب٠٠ا Ø¢Ø²Ø§Ø¯Û Ø¨ÛØ´ØªØ±Û Ø¨Ø±Ø§Û Ø³Ø§Ø²Ù Ø§ÙØ¯ÙÛ Ú©Ø±Ø¯Ù Ú©Ø¯ ٠ا٠ب٠٠ا Ù ÛâØ¯ÙØ¯Ø ÚÙ٠٠ا Ù ÛâØªÙØ§ÙÛÙ ÚÙÛ٠تابعâÙØ§ÛÛ Ø±Ø§ ÙØ¨Ù از اÛÙک٠تعرÛÙ Ø´ÙÙØ¯ صدا بزÙÛÙ .
ÙÙ
ÚÙÛÙ Ø¢Ù Ø¨Ø±Ø§Û Ø®ÙØ§ÙاÛÛ ÙÛØ² Ø¨ÙØªØ± Ø§Ø³ØªØ ÚÙÙ Ù¾ÛØ¯Ø§ کرد٠function f(...) {...} در کد Ø±Ø§ØØª تر است از let f = function(...) {...}. Function DeclarationÙØ§ âÚØ´Ù
ÙÙØ§Ø²ØªØ±â ÙØ³ØªÙد.
â¦Ø§Ù ا اگر ÛÚ© Function Declaration Ø¨Ø±Ø§Û Ù Ø§ Ø¨Ù Ø¯ÙØ§ÛÙÛ Ù ÙØ§Ø³Ø¨ ÙØ¨ÙØ¯Ø ÛØ§ ٠ا ÛÚ© تعرÛ٠بر اساس شرط ÙÛØ§Ø² داشتÛÙ (Ú©Ù Ø¨Ù ØªØ§Ø²Ú¯Û ÛÚ© ٠ثا٠از Ø¢Ù Ø¯ÛØ¯ÛÙ )Ø Ø³Ù¾Ø³ Function Expression Ø¨Ø§ÛØ¯ Ø§Ø³ØªÙØ§Ø¯Ù Ø´ÙØ¯.
Ø®ÙØ§ØµÙ
- تابعâÙØ§ Ù ÙØ¯Ø§Ø± ÙØ³ØªÙد. Ø¢ÙÙØ§ Ù ÛâØªÙØ§ÙÙØ¯ ÙØ±Ø¬Ø§Û کد ØªØ®ØµÛØµ داد٠شÙÙØ¯Ø Ú©Ù¾Û Ø´ÙÙØ¯ ÛØ§ تعرÛÙ Ø´ÙÙØ¯.
- اگر تابع ب٠عÙÙØ§Ù ÛÚ© Ø¯Ø³ØªÙØ± جداگاÙ٠در Ø¬Ø±ÛØ§Ù کد اصÙÛ ØªØ¹Ø±ÛÙ Ø´Ø¯Ù Ø¨Ø§Ø´Ø¯Ø ÛÚ© âFunction Declarationâ ÙØ§Ù ÛØ¯Ù Ù ÛâØ´ÙØ¯.
- اگر تابع ب٠عÙÙØ§Ù Ø¨Ø®Ø´Û Ø§Ø² ÛÚ© عبارت Ø³Ø§Ø®ØªÙ Ø´Ø¯Ù Ø¨Ø§Ø´Ø¯Ø ÛÚ© âFunction Expressionâ ÙØ§Ù ÛØ¯Ù Ù ÛâØ´ÙØ¯.
- Function Declarations ÙØ¨Ù از اÛÙک٠بÙÙÚ© کد اجرا Ø´ÙØ¯ پردازش Ù ÛâØ´ÙÙØ¯. Ø¢ÙÙØ§ از ÙØ±Ø¬Ø§Û بÙÙÚ© ÙØ§Ø¨Ù رÙÛØª ÙØ³ØªÙد.
- Function Expressions ز٠اÙÛ Ú©Ù Ø¬Ø±ÛØ§Ù اصÙÛ Ø¨Ù Ø¢ÙÙØ§ Ù ÛâØ±Ø³Ø¯ ساخت٠٠ÛâØ´ÙÙØ¯.
در اکثر Ù ÙØ§Ø±Ø¯ ز٠اÙÛ Ú©Ù Ù Ø§ Ù ÛâØ®ÙØ§ÙÛÙ ÛÚ© تابع تعرÛÙ Ú©ÙÛÙ Ø ÛÚ© Function Declaration ØªØ±Ø¬ÛØ داد٠٠ÛâØ´ÙØ¯Ø ÚÙÙ ÙØ¨Ù از اÛÙک٠تعرÛÙ Ø´ÙØ¯ ÙØ§Ø¨Ù رÙÛØª است. آ٠ب٠٠ا Ø§ÙØ¹Ø·Ø§Ù Ø¨ÛØ´ØªØ±Û Ø¨Ø±Ø§Û Ø³Ø§Ø²Ù Ø§ÙØ¯ÙÛ Ú©Ø¯ Ù ÛâØ¯ÙØ¯Ø ٠٠ع٠ÙÙØ§ Ø®ÙØ§Ùاتر است.
پس ٠ا Ø¨Ø§ÛØ¯ ÙÙØ· ز٠اÙÛ Ø§Ø² Function Expression Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ Ú©Ù Function Declaration Ø¨Ø±Ø§Û Ú©Ø§Ø± Ù ÙØ§Ø³Ø¨ ÙØ¨Ø§Ø´Ø¯. ٠ا ÛÚ© Ø¬ÙØª ٠ثا٠از آ٠در اÛÙ ÙØµÙ Ø¯ÛØ¯ÛÙ Ø Ù Ø¯Ø± Ø¢ÛÙØ¯Ù Ø¨ÛØ´ØªØ± Ø®ÙØ§ÙÛÙ Ø¯ÛØ¯.
ÙØ¸Ø±Ø§Øª
<code>Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯Ø Ø¨Ø±Ø§Û ÚÙØ¯Û٠خط â کد را درÙ٠تگ<pre>ÙØ±Ø§Ø± دÙÛØ¯Ø Ø¨Ø±Ø§Û Ø¨ÛØ´ از د٠خط کد â Ø§Ø² ÛÚ© جعبÙÙ Ø´ÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. (plnkrØ jsbinØ codepenâ¦)