ÛÚ© را٠سادÙâØªØ± Ù Ú©ÙØªØ§ÙâØªØ± دÛگر Ø¨Ø±Ø§Û Ø³Ø§Ø®ØªÙ ØªØ§Ø¨Ø¹âÙØ§ ÙØ¬Ùد Ø¯Ø§Ø±Ø¯âØ Ø±Ø§ÙÛ Ú©Ù Ù Ø¹Ù ÙÙØ§ از Function Expressions Ø¨ÙØªØ± است.
بÙâØ®Ø§Ø·Ø± Ø´Ú©ÙÛ Ú©Ù Ø¯Ø§Ø±Ø¯Ø arrow functions ÙØ§Ù Ú¯Ø±ÙØªÙ است.
let func = (arg1, arg2, ..., argN) => expression;
â¦Ø§Û٠کد ÛÚ© تابع func Ù
ÛâØ³Ø§Ø²Ø¯ ک٠آرگÙÙ
اÙâÙØ§Û arg1..argN را Ù
ÛâÙ¾Ø°ÛØ±Ø¯ ٠با Ø§Ø³ØªÙØ§Ø¯Ù از اÛ٠آرگÙÙ
اÙâÙØ§ expression سÙ
ت راست را Ø§Ø±Ø²ÛØ§Ø¨Û Ù
ÛâÚ©ÙØ¯ Ù ÙØªÛج٠آ٠را برÙ
ÛâÚ¯Ø±Ø¯Ø§ÙØ¯.
Ø¨Ù Ø¨ÛØ§ÙÛ Ø¯ÛÚ¯Ø±Ø Ø§Û٠کد ÙØ³Ø®ÙâÛ Ú©ÙØªØ§ÙâØ´Ø¯Ù Ú©Ø¯ Ø²ÛØ± است:
let func = function(arg1, arg2, ..., argN) {
return expression;
};
Ø¨ÛØ§ÛÛØ¯ ٠ثا٠دÛÚ¯Ø±Û Ø¨Ø¨ÛÙÛÙ :
let sum = (a, b) => a + b;
/* ÙØ³Ø®Ù Ú©ÙØªØ§Ù تابع Ø²ÛØ± است arrow function اÛÙ:
let sum = function(a, b) {
return a + b;
};
*/
alert( sum(1, 2) ); // 3
ÙÙ
Ø§ÙØ·Ùر Ú©Ù Ù
ÛâØ¨ÛÙÛØ¯ (a + b) <= (a, b) بدÛÙ Ù
عÙÛâØ³Øª ک٠اÛ٠تابع د٠آرگÙÙ
ا٠با ÙØ§Ù
âÙØ§Û a Ù b Ù
ÛâÙ¾Ø°ÛØ±Ø¯. Ù ÙÙگاÙ
اجرا Ø´Ø¯ÙØ Ù
ÙØ¯Ø§Ø± a + b را ØØ³Ø§Ø¨ Ù
ÛâÚ©ÙØ¯ Ù ÙØªÛج٠را برÙ
ÛâÚ¯Ø±Ø¯Ø§ÙØ¯.
-
اگر ÙÙØ· ÛÚ© آرگÙ٠ا٠داشت٠باشÛÙ Ù ÛâØªÙØ§ÙÛÙ Ù¾Ø±Ø§ÙØªØ² Ø¯ÙØ± آرگÙ٠ا٠را ØØ°Ù Ú©ÙÛ٠٠کد را از اÛÙ ÙÙ Ú©ÙØªØ§ÙâØªØ± Ú©ÙÛÙ .
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
let double = n => n * 2; // let double = function(n) { return n * 2 } :٠عاد٠است با alert( double(3) ); // 6 -
اگر آرگÙÙ Ø§Ù ÙØ±ÙØ¯Û ÙØ¯Ø§Ø´ØªÙ باشÛÙ Ø Ù¾Ø±Ø§ÙØªØ²Ùا خاÙÛ Ù Ûâ٠اÙÙØ¯ ÙÙÛ ØØªÙ ا Ø¨Ø§ÛØ¯ ØØ§Ø¶Ø± Ø¨Ø§Ø´ÙØ¯:
let sayHi = () => alert("Hello!"); sayHi();
از Arrow functionÙØ§ ب٠Ù٠ا٠شک٠Function ExpressionÙØ§ Ø§Ø³ØªÙØ§Ø¯Ù Ù ÛâØ´ÙØ¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§ÙØ Ø¨Ø±Ø§Û Ø³Ø§Ø®Øª ÛÚ© تابع بÙâØ´Ú©Ù Ø¯Ø§ÛÙØ§Ù ÛÚ© ٠اÙÙØ¯ Ø²ÛØ± ع٠٠٠ÛâÚ©ÙÛÙ :
let age = prompt("What is your age?", 18);
let welcome = (age < 18) ?
() => alert('Hello!') :
() => alert("Greetings!");
welcome();
٠٠ک٠است در ابتدا ØºØ±ÛØ¨Ù Ù ÙØ§Ø®ÙØ§ÙØ§ Ø¨Ù ÙØ¸Ø± Ø¨Ø±Ø³ÙØ¯ ا٠ا ÙÙØªÛ ÚØ´Ù تا٠ب٠آ٠عادت Ù ÛâÚ©ÙØ¯Ø ÙÙ Ù ÚÛØ² Ø¹ÙØ¶ Ù ÛâØ´ÙØ¯.
Ù Ø¨Ø±Ø§Û Ú©Ø¯ÙØ§Û تک Ø®Ø·Û Ø¨Ø³ÛØ§Ø± Ù ÙØ§Ø³Ø¨ ÙØ³ØªÙد. Ù Ø®ØµÙØµØ§ ÙÙØªÛ خستÙâØªØ± از Ø¢Ù ÙØ³ØªÛÙ Ú©Ù Ú©Ù٠ات Ø²ÛØ§Ø¯Û بÙÙÛØ³ÛÙ .
ÙÙØªÛ Arrow FunctionÙØ§ ÚÙØ¯Ø®Ø·Û Ù ÛâØ´ÙÙØ¯
arrow functionâÙØ§ÛÛ Ú©Ù ØªØ§ ب٠اÛÙØ¬Ø§ Ø¯ÛØ¯ÛÙ
Ø®ÛÙÛ Ø³Ø§Ø¯Ù Ø¨ÙØ¯Ùد. Ø¢ÙâÙØ§ آرگÙÙ
اÙâÙØ§ را از سÙ
ت ÚÙ¾ <= Ø¯Ø±ÛØ§Ùت Ú©Ø±Ø¯ÙØ¯Ø Ø¢ÙâÙØ§ را Ø§Ø±Ø²ÛØ§Ø¨Û Ú©Ø±Ø¯ÙØ¯ ٠عبارت سÙ
ت راست را از طرÛ٠آÙâÙØ§ Ø¨Ø±Ú¯Ø±Ø¯Ø§ÙØ¯Ùد.
گاÙÛ Ø§ÙÙØ§Øª Ù
ا Ø¨Ù ØªØ§Ø¨Ø¹Û Ù¾ÛÚÛØ¯ÙâØªØ± ÙÙ
را٠با ÚÙØ¯ عبارت Ù Ø¯Ø³ØªÙØ± ÙÛØ§Ø² دارÛÙ
. در اÛÙ ØµÙØ±ØªØ Ù
ÛâØªÙØ§ÙÛÙ
Ø¢ÙâÙØ§ را درÙ٠آکÙÙØ§Ø¯ ÙØ±Ø§Ø± دÙÛÙ
. ØªÙØ§Ùت اصÙÛ Ø§Û٠است ک٠آکÙÙØ§Ø¯Ùا Ø¨Ø±Ø§Û Ø¨Ø±Ú¯Ø±Ø¯Ø§ÙØ¯Ù ÛÚ© Ù
ÙØ¯Ø§Ø± ب٠return ÙÛØ§Ø² Ø¯Ø§Ø±ÙØ¯ (درست Ù
اÙÙØ¯ ÛÚ© تابع عادÛ).
٠اÙÙØ¯ اÛÙ:
let sum = (a, b) => { // Ú©Ù
اÙÚ© ÛÚ© تابع ÚÙØ¯Ø®Ø¸Û را دربرÙ
ÛâÚ¯ÛØ±Ø¯
let result = a + b;
return result; // Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
"return" اگر از Ø¢Ú©ÙÙØ§Ø¯ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
Ø Ø³Ù¾Ø³ Ø¨Ø§ÛØ¯ ØµØ±Ø§ØØªØ§ از
};
alert( sum(1, 2) ); // 3
٠ا در اÛÙØ¬Ø§ از Ú©ÙØªØ§ÙÛ Ù Ù Ø®ØªØµØ±Û arrow functionÙØ§ Ú¯ÙØªÛÙ . ÙÙÛ ÙÙØ· اÛÙ ÙÛØ³Øª!
اÛÙ ØªÙØ§Ø¨Ø¹ ÙÛÚÚ¯ÛâÙØ§Û Ø¬Ø§ÙØ¨ دÛÚ¯Ø±Û ÙÙ Ø¯Ø§Ø±ÙØ¯.
Ø¨Ø±Ø§Û Ø§Û٠ک٠ع٠ÛÙ ÙØ§Ø±Ø¯Ø´ بشÙÛÙ Ø ÙÛØ§Ø² دارÛ٠اÙ٠بخشâÙØ§Û دÛÚ¯Ø±Û Ø§Ø² Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت را Ø¨Ø´ÙØ§Ø³ÛÙ . Ø¨Ø±Ø§Û ÙÙ Û٠در ÙØµÙ دÛÚ¯Ø±Û Ø¨Ù arrow functionÙØ§ بر٠ÛâگردÛÙ Ø³Ø±Ú©Ø´Û Ø¯ÙØ¨Ø§Ø±Ù از تابعâÙØ§Û ک٠اÙÛ.
ÙØ¹Ùا Ù ÛâØªÙØ§ÙÛ٠از arrow functionÙØ§ Ø¨Ø±Ø§Û Ø§Ø¹Ù Ø§Ù ØªÚ© Ø®Ø·Û Ù callbackÙØ§ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ .
Ø®ÙØ§ØµÙ
ØªÙØ§Ø¨Ø¹ Arrow function Ù ÙØ§Ø³Ø¨ ع٠ÙÛØ§Øª Ø³Ø§Ø¯Ù Ø®ØµÙØµØ§ Ú©Ø¯ÙØ§Û ØªÚ©âØ®Ø·Û ÙØ³ØªÙد. Ø¢ÙâÙØ§ Ø¯Ù ØØ§Ùت Ø¯Ø§Ø±ÙØ¯:
- بدÙ٠آکÙÙØ§Ø¯:
(expression) <= (args...)â Ø³Ù ت راست ÛÚ© expression ÛØ§ عبارت است: تابع آ٠را Ø§Ø±Ø²ÛØ§Ø¨Û Ù ÛâÚ©ÙØ¯ Ù ÙØªÛج٠را بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯. اگر تÙÙØ§ ÛÚ© آرگÙÙ Ø§Ù ÙØ¬Ùد Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´Ø¯Ø Ù¾Ø±Ø§ÙØªØ²Ùا Ù ÛâØªÙØ§ÙÙØ¯ ØØ°Ù Ø´ÙÙØ¯ ٠اÙÙØ¯n => n * 2. - با Ø¢Ú©ÙÙØ§Ø¯:
{ body } <= (args...)â Ø¢Ú©ÙÙØ§Ø¯Ùا ب٠٠ا اÛ٠ا٠کا٠را Ù ÛâØ¯ÙÙØ¯ تا ÚÙØ¯ Ø¯Ø³ØªÙØ± را داخ٠تابع بÙÙÛØ³ÛÙ , ا٠ا در اÛÙ ØµÙØ±Øª Ø¨Ø§ÛØ¯ ØØªÙ ا ازreturnØ¨Ø±Ø§Û Ø¨Ø§Ø²Ú¯Ø±Ø¯Ø§ÙØ¯Ù ÙØªÛØ¬Ù Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ .
ÙØ¸Ø±Ø§Øª
<code>Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯Ø Ø¨Ø±Ø§Û ÚÙØ¯Û٠خط â کد را درÙ٠تگ<pre>ÙØ±Ø§Ø± دÙÛØ¯Ø Ø¨Ø±Ø§Û Ø¨ÛØ´ از د٠خط کد â Ø§Ø² ÛÚ© جعبÙÙ Ø´ÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. (plnkrØ jsbinØ codepenâ¦)