aboutsummaryrefslogtreecommitdiff
path: root/files/ar/glossary/function/index.html
blob: 169997f62cb64a2c613867d802e70cfda88923fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
---
title: دالة
slug: Glossary/Function
tags:
  - جافاسكربت
  - مسرد
translation_of: Glossary/Function
---
<p dir="rtl"><strong>الدالة</strong> (بالإنجليزيَّة: Function) هي قطعة من الكود يُمكِن استدعاؤها من جزء آخر أو من قبل نفسها، أو هي {{Glossary("variable", "مُتغيِّر")}} يشير إلى دالة. عندما تُستدعى الدالة، تُمرَّر {{Glossary("Argument", "المُعطيات")}} إلى الدالة كمُدخلات، كما يُمكِن للدالة - اختياريًا - أن تُعيد مُخرجًا. تُصنَّف الدوال في لغة {{glossary("JavaScript", "الجافاسكربت")}} على أنهَّا {{glossary("object", "كائنات")}}.</p>

<p dir="rtl">اسم الدالة هو {{Glossary("identifier", "مُعرِّف")}} يُصرَّح عنه كجزء من كود التصريح عن الدالة. يعتمد {{Glossary("scope", "مجال")}} اسم الدالة على ما إذا كان اسمها تصريحًا أم تعبيرًا (حيث إذا كان تصريحًا سيُحمَّل قبل تنفيذ الكود، أما إذا كان تعبيرًا  سيُحمَّل عند وصول المُفسِّر إليه. طالع <a href="https://stackoverflow.com/questions/1013385/what-is-the-difference-between-a-function-expression-vs-declaration-in-javascrip">هذا السؤال</a> للمزيد من المعلومات).</p>

<h3 dir="rtl" id="الأنواع_المختلفة_للدوال">الأنواع المختلفة للدوال</h3>

<p dir="rtl"><strong>الدالة المجهولة </strong>(بالإنجليزيَّة: Anonymous function) هي دالة لا تملك اسمًا:</p>

<pre class="brush: js">function () {};
// أو باستخدام الأسهم في إصدار EMAScript 2015
() =&gt; {};
</pre>

<p dir="rtl"><strong>الدالة المُسمّاة</strong> (بالإنجليزيَّة: Named function) هي دالة تملك اسمًا:</p>

<pre class="brush: js">function foo() {};
// أو باستخدام الأسهم في إصدار EMAScript 2015
const foo = () =&gt; {};
</pre>

<p dir="rtl"><strong>الدالة المُحاطة</strong> (بالإنجليزيَّة: Inner function) هي دالة بداخل أخرى (الدالة <code>square</code> كما في مثالنا أدناه). <strong>الدالة المُحيطة</strong> (outer function) هي دالة (الدالة <code>addSquares</code> كما في مثالنا أدناه) تُحيط بأخرى:</p>

<pre class="brush: js">function addSquares(a,b) {
   function square(x) {
      return x * x;
   }
   return square(a) + square(b);
};
//باستخدام الأسهم في إصدار ECMAScript 2015
const addSquares = (a,b) =&gt; {
   const square = x =&gt; x*x;
   return square(a) + square(b);
};
</pre>

<p dir="rtl"><strong>الدالة العوديّة</strong> (بالإنجليزيَّة: Recursive function) هي دالة تستدعي نفسها. طالع {{Glossary("Recursion", "المعاودة")}} للمزيد من التفاصيل.</p>

<pre class="brush: js">function loop(x) {
   if (x &gt;= 10)
      return;
   loop(x + 1);
};
//باستخدام الأسهم في إصدار ECMAScript 2015
const loop = x =&gt; {
   if (x &gt;= 10)
      return;
   loop(x + 1);
};
</pre>

<p dir="rtl"><strong>التعبيرات الداليَّة المُستحضرة فوريًا</strong> (بالإنجليزيَّة: Immediately Invoked Function Expressions) هي دوال تُستدعى مباشرةً بعد أنْ تُحمَّل إلى {{glossary("Compiler", "مُصرِّف")}} المُتصفِّح. يُعرَّف هذا النوع من الدوال عبر إضافة قوسان: يساري ويميني إضافيان في نهاية تصريح الدالة (انظر أدناه).</p>

<pre class="brush: js">// Error (https://en.wikipedia.org/wiki/Immediately-invoked_function_expression)
/*
​function foo() {
    console.log('Hello Foo');
}();
*/

(function foo() {
    console.log("Hello Foo");
}());

(function food() {
    console.log("Hello Food");
})();

</pre>

<p dir="rtl">اقرأ <a href="https://en.wikipedia.org/wiki/Immediately-invoked_function_expression">هذه المقالة</a> في الموسوعة الحرَّة للمزيد عن هذا النوع من الدوال.</p>

<h2 dir="rtl" id="المزيد_من_التفاصيل">المزيد من التفاصيل</h2>

<h3 dir="rtl" id="مراجع_تقنيّة">مراجع تقنيّة</h3>

<ul dir="rtl">
 <li><a href="/ar/docs/Web/JavaScript/Guide/Functions">توثيق الدوال</a> في شبكة مطوري موزيلا</li>
 <li><a href="/ar/docs/Web/JavaScript/Guide/Functions">الدوال السهميّة</a></li>
</ul>