‎‎تعاريف تابع در جاوااسكريپتJavaScript Function Definitions -‎

Previous >    <Next  

‎توابع در جاوااسكريپت با كي ورد‎function‎ تعريف ميشوند .تعريف تابع را بصورت declaration‎يا expression ميتوان استفاده كرد .

‎‎تعاريف تابعFunction Declarations -‎

‎‎قبلا تعريف تابع در مطالب ارائه شده تابع مطابق فرمت كلي‎(Syntax)‎ زير ارائه گرديد

function functionName(parameters) {
  // code to be executed
}

‎توابع اعلام شده بلافاصله اجرا نميشوند، آنها براي استفاده هاي بعدي ذخيره ميشوند .اجراي آنها ‎در هنگام فراخواني تابع‎(called upon)‎ است.

‎‎مثال ـ تعريف تابع

function myFunction(a, b) {
  return a * b;
}

--(go to editor for change code and run)

‎سميكالن براي جداسازي دستورات اجرائي جاوااسكريپت استفاده ميشود .از آنجائيگه تعريف تابع يك ‎دستور اجراي نيست، انتهاي آن هم قراردادن سميكالن معمول نيست.

‎‎عبارات تابعيFunction Expressions -‎

‎يك تابع در جاوااسكريپت ميتواند در يك عبارت تعريف گردد .يك عبارت تابعي در يك متغير ذخيره ‎ميشود.

‎‎مثال ـ عبارت تابعي

const x = function (a, b) {return a * b};

--(go to editor for change code and run)

‎بعداز اينكه يك عبارت تابعي در يك متغير ذخيره گرديد، متغير بعنوان يك تابع قابل استفاده ‎ميباشد.

‎‎مثال ـ استفاده از متغير تابعي

const x = function (a, b) {return a * b};
let z = x(4, 3);

--(go to editor for change code and run)

‎‎تابع بالا در واقع يك تابع ناشناس وبي نام‎(function without a name)‎ است .

‎‎تابع ذخيره شده در متغير نياز به نامگذاري ندارد، آن ها هميشه توسط متغير فراخوان ميشوند.

‎‎توجه ـ تابع عبارتي بالا با سميكالن پايان يافته است، چون آن قسمتي از يك دستور اجرائي است.

‎‎تابع سازندهThe Function Constructor -‎

‎آنچكه در مثال قبلي مشاهده كرديد، تابع جاوااسكريپت بوسيله كي ورد‎function‎ ‎تعريف گرديده است.

‎‎توابع را ميتوان با تابع سازنده داخلي‎Function( )‎ نيز تعريف نمود .

‎‎مثال ـ تعريف تابع، با تابع سازند

const myFunction = new Function("a", "b", "return a * b");

let x = myFunction(4, 3);

--(go to editor for change code and run)

‎در واقع لازم نيست از تابع سازنده استفاده نمائيد، مثال بالا بدون تابع سازنده مطابق زير ‎نوشته ميشود.

const myFunction = function (a, b) {return a * b};

let x = myFunction(4, 3);

--(go to editor for change code and run)

‎‎بيشتر اوقات ميتوانيد از استفاده‎new ‎ جاوااسكريپت اجتناب كنيد .

‎‎استقرار تابع در بالاFunction Hoisting -‎

‎در فصول گذشته در مورد استقرار دربالا براي جاوااسكريپت بحث گرديد .اين مطلب را در فصل JavaScript Hoisting ‎دنبال كنيد.

‎بالا بردن تعاريف در يك ميدان روش پيش فرض جاوااسكريپت است، كه آنها را دربالاي ميدان جاري ‎قرار دهد .تعاريف متغير ها و توابع مشمول اين رفتار پيش فرض ميشود .بهمين دليل تابع قبل از ‎استفاده ، ميتواند فراخوان شود.

myFunction(5);

function myFunction(y) {
  return y * y;
}

‎‎توابعي كه با استفاد از عبارت تعريف شده اند مشمول بالا بردن نيستند.

‎‎توابع خود فراخوانSelf-‎Invoking Function -‎

‎تابع عبارتي را ميتوان خودفراخوان ساخت .يك تابع عبارتي خود فراخوان، در شروع بصورت خودكار ‎فراخوان ميشود.

‎‎اگر عبارت تابع با‎()‎‎ دنبال شود، تابع بصورت خودكار اجرا ميشود .

‎‎بايد اطراف عبارت تابعي پرانتز قرا گيرد، تا نشان داده شود كه عبارت تابع است.

‎‎مثال ـ تابع خود فراخوان

(function () {
  let x = "Hello!!";  // I will invoke myself
})();

--(go to editor for change code and run)

‎‎تابع فوق در واقع يك تابع ناشناس خود فراخوان است.

‎‎استفاده توابع مشابه مقدارFunction Can Be Used as Values -‎

‎‎توابع جاوااسكريپت ميتوانند مشابه مقدار استفاده شوند.

‎‎مثال ـ استفاده تابع مشابه مقدار

function myFunction(a, b) {
  return a * b;
}

let x = myFunction(4, 3);

--(go to editor for change code and run)

‎‎توابع جاوااسكريپت ميتوانند در عبارات مورد استفاده قرار گيرند.

‎‎مثال ـ استفاده تابع در عبارت

function myFunction(a, b) {
  return a * b;
}

let x = myFunction(4, 3) * 2;

--(go to editor for change code and run)

‎‎توابع شئ هستندFunctions are Objects -‎

‎عملگر‎typeof‎ بر روي يك تابع نتيجه ‎‎"function‎"‎ را برگشت ميدهد . ‎اما، توابع جاوااسكريپت را ميتوان به بهترين شكل به عنوان اشياء توصيف نمود.آنها داراي ويژگي ‎ومتد ميباشند.

‎‎ويژگي‎argument.Length‎ تعداد آرگومانهاي تابع را برگشت ميدهد .

‎‎مثال ـ ويژگي تعداد آرگومان تابع

function myFunction(a, b) {
  return arguments.length;
}

--(go to editor for change code and run)

‎‎متد‎toString( )‎ تابع را بصورت رشته برگشت ميدهد .

‎‎مثال ـ متد‎toString( )‎ روي تابع

function myFunction(a, b) {
  return a * b;
}

let text = myFunction.toString();

--(go to editor for change code and run)

‎‎‎تابعي كه به عنوان ويژگي يك شئ تعريف ميشود، به آن متد شئ ميگويند.

‎‎تابعي كه براي ايجاد اشياء جديد طراحي شده، سازنده شئ ناميده ميشود.

‎‎توابع پيكانيArrow Functions -‎

‎‎توابع پيكاني فرمت كوتاهي‎(short Syntax)‎ است براي تعريف ويا نوشتن عبارات تابعي

‎‎در اين فرم نياز به كي ورد‎function‎ ،‎return‎ و براكت نمي باشد.

‎‎مثال ـ نمونه تابع عبارتي وپيكاني

// ES5
var x = function(x, y) {
  return x * y;
}

// ES6
const x = (x, y) => x * y;

--(go to editor for change code and run)

‎‎در توابع پيكاني‎this‎ كار نميكند، آنها براي متدهاي شئي مناسب نيستند .

‎اين نوع توابع داراي امكان بالا رفتن را مشابه توابع معمولي ندارند .وبايد حتما قبل ازاستفاده ‎تعريف شده باشند.

‎استفاده از‎const‎ ايمن تر از‎var‎است، زيرا يك عبارت تابع هميشه ‎مقدار ثابتي دارد.

‎تنها در صورتي مي توانيد كي ورد‎return‎ وبراكت را درآن حذف كنيد كه آن فقط يك ‎دستور داشته باشد .اما بهتراست هميشه آنهارا استفاده نمائيد.

‎‎مثال ـ تابع پيكاني مناسب

const x = (x, y) => { return x * y };

--(go to editor for change code and run)

‎‎توابع پيكاني درIE11 وقبلي هاي آن پشتيباني نميشوند .


Previous >    <Next