محمود السعيد عوف نشر 20 أغسطس أرسل تقرير مشاركة نشر 20 أغسطس السلام عليكم ورحمة الله وبركاته اريد شرح مفصل للدوال عديمة الاسم وما الفرق بينها وبين الدوال المسماة واين استخدم هذه واين استخدم هذه حيث ان في مواقع تحدياتا لبرمجة اغلب الدوال المستخدمة في حل التحديات تكون عديمة الاسم وشكرا مقدما علي الرد 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Mustafa Suleiman نشر 20 أغسطس أرسل تقرير مشاركة نشر 20 أغسطس تلك عبارة عن دوال يتم تعريفها بدون اسم، أي بدلاً من تعريفها باستخدام الكلمة المفتاحية function متبوعة باسم، نقوم تعريفها باستخدام الكلمة المفتاحية function فقط، أو باستخدام صيغة arrow function. function() { console.log(" دالة عديمة الاسم!"); } والدوال عديمةالاسم لا نستطيع إعادة استخدامها مباشرًة، فليس لها اسم نستطيع من خلالها استدعائها. أيضًا لا يتم تنفيذ الرفع Hoisting لها، أي لا تستطيع استدعائها قبل تعريفها في الكود أي قبل السطر الخاص بها في الكود، فنحن لا نستطيع ذلك بدون اسم لذا لا يتم رفعها. والفائدة منها هي استخدامها كدالة IIFE أي كـ (Immediately Invoked Function Expression) وهي دوال يتم تعريفها وتنفيذها مباشرةً. (function() { console.log("أنا دالة عديمة الاسم!"); })(); لاحظ الأقواس التي حول الدالة والقوسين بعدها والتي تعني تنفيذها مباشرًة فور الوصول لتلك الدالة في الكود من قبل المترجم. بالتالي في أي موضع لا تحتاج به إعادة استخدام تلك الدالة مرة أخرى في الكود، فقم بكتابتها بدون اسم، مثل دالة IIFE. أو مثلاً كـ دوال Callback والتي تستخدم بكثرة كـ دوال يتم تمريرها كمعامل لدوال أخرى، مثل دوال معالجة الأحداث أو دوال setTimeout و setInterval. setTimeout(function() { console.log("تم تنفيذ هذه الدالة بعد ثانية واحدة"); }, 1000); أيضًا مع دوال ذات ترتيب أعلى Higher-Order Functions مثل map و filter و reduce. const numbers = [1, 2, 3, 4, 5]; const doubledNumbers = numbers.map(function(number) { return number * 2; }); وللعلم توفر جافاسكريبت صيغة مختصرة لكتابة الدوال عديمة الاسم، وهي Arrow Function. const sum = (a, b) => a + b; فلا تحتاج إلى استخدام الكلمة المفتاحية function، ولا تحتاج إلى استخدام الأقواس {} أو الكلمة المفتاحية return إن كان جسم الدالة يتكون من سطر واحد فقط، وترث قيمة this من النطاق scope المحيط بها. وعلى الرغم من أنك تستطيع استخدام المتغير sum لاستدعاء الدالة أي من خلال اسم، لكن الدالة نفسها بدون اسم، لذا الأمر قد يحيرك قليلاً لفهمه. 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 عبدالباسط ابراهيم نشر 20 أغسطس أرسل تقرير مشاركة نشر 20 أغسطس كما شرؤح لك مصطفى بشكل رائع أن الدوال عديمة الاسم أو Anonymous Functions هي دوال تُعرّف بدون اسم محدد. بدلاً من أن يكون للدالة اسم يمكن استدعاؤها به لاحقاً، يتم استخدامها في المكان الذي تم تعريفها فيه. ولكن سأحاول شرح متى نستخدم الAnonymous Functions بشكل عملي أولاً تُستخدم هذه الدوال غالبًا في الأماكن التي تحتاج فيها إلى تمرير دالة كمعامل لدالة أخرى. على سبيل المثال، في المصفوفات عند استخدام map أو filter أو forEach. const numbers = [1, 2, 3, 4]; const squaredNumbers = numbers.map(function(num) { return num * num; }); console.log(squaredNumbers); // Output: [1, 4, 9, 16] ثانياً عندما تحتاج إلى دالة تؤدي مهمة معينة ولا تحتاج إلى تكرارها في أماكن أخرى. setTimeout(function() { console.log("Time's up!"); }, 2000); // يتم تنفيذ الدالة بعد 2 ثانية و أحيانًا تحتاج إلى دالة داخل دالة أخرى لأداء مهمة محددة في نطاق صغير. function outerFunction() { return function() { console.log("Inner function"); }; } const inner = outerFunction(); inner(); // "Inner function" 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 محمود السعيد عوف نشر 20 أغسطس الكاتب أرسل تقرير مشاركة نشر 20 أغسطس حسنا جزاكم الله خيرا علي الاجابة , ولكن لا يوجد فرق بين الدوال عديمة الاسم عندما استخدم الكلمة المفتاحية function والدوال السهمية arrow function صحيح؟ اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
محمود السعيد عوف
السلام عليكم ورحمة الله وبركاته اريد شرح مفصل للدوال عديمة الاسم وما الفرق بينها وبين الدوال المسماة واين استخدم هذه واين استخدم هذه حيث ان في مواقع تحدياتا لبرمجة اغلب الدوال المستخدمة في حل التحديات تكون عديمة الاسم وشكرا مقدما علي الرد
رابط هذا التعليق
شارك على الشبكات الإجتماعية
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.