Talal Alharbi2 نشر 26 مارس 2023 أرسل تقرير نشر 26 مارس 2023 ماذا تعني هذه الامور بجافا سكريبت First Class Function Higher-Order Function 1 اقتباس
0 عمر قره محمد نشر 26 مارس 2023 أرسل تقرير نشر 26 مارس 2023 First Class Function أي وظائف من الدرجة الأولى وهي تطلق على الوظائف إذا كانت تعامل مثل باقي المتغيرات (Variable) . و هذا يعني أن هذه الوظائف يمكن تمريرها كوسائط إلى وظائف أخرى (Argument)، وإعادتها كقيم من وظائف أخرى ، وتعيينها لمتغيرات أو تخزينها في هياكل البيانات. Higher-Order Function الوظيفة الأعلى مرتبة وهي الوظيفة التي تقوم بتنفيذ واحد على الأقل مما يلي: يأخذ وظيفة أو أكثر كوسائط parameters. إرجاع دالة كنتيجة لها. جميع الوظائف الأخرى هي وظائف من الدرجة الأولى. تُستخدم الدوال من مرتبة عليا عادةً في حالات التحكم في التدفق (Flow Control) والتلاعب بالبيانات (Data Manipulation) والتعامل مع الأحداث (Events) وغيرها، ومن أمثلة الدوال من مرتبة عليا في جافاسكريبت: 1- دوال التحكم في التدفق: forEach() map() filter() reduce() sort() 2- دوال التلاعب بالبيانات: find() every() some() concat() slice() 3- دوال التعامل مع الأحداث: addEventListener() setTimeout() setInterval() يمكن استخدام الدوال من مرتبة عليا لتحسين كفاءة الكود وتقليل حجمه، كما يمكن استخدامها لإنشاء دوال مخصصة تعمل بشكل محدد في حالات معينة. قد يفيدك الاطلاع على هذه المقالة : اقتباس
0 محمد Fahmy نشر 26 مارس 2023 أرسل تقرير نشر 26 مارس 2023 First Class Function: تعني أن الدوال في جافا سكريبت يمكن استخدامها كمتغيرات وإرجاعها كقيمة من دالة أخرى، ويمكن تمريرها كوسائط لدوال أخرى. مثال: function calc(num1, num2) { return num1 + num2; } const plus = calc; // يتم تخزين الدالة add في متغير sum console.log(plus(8, 4)); // سيظهر الناتج 12 Higher-Order Function: تعني دالة يمكنها استقبال دالة أخرى كوسيط أو إرجاع دالة جديدة. مثال: function calc(num) { return function(x) { return x * num; } } const double = calc(4); // يتم إنشاء دالة جديدة تضرب العدد بـ4 console.log(double(2)); // سيظهر الناتج 8 يمكنك التعمق في Higher-Order Function من خلال موسوعة حسوب. الدوال من المرتبة الأعلى (Higher-Order Functions) و Lambdas - موسوعة حسوب (hsoub.com) اقتباس
0 عبدالباسط ابراهيم نشر 26 مارس 2023 أرسل تقرير نشر 26 مارس 2023 تعتبر لغة البرمجة أنها تدعم وظائف الدرجة الأولى عندما لا يكون لها قيود / حدود على كيفية إنشاء الوظائف أو استخدامها.حيث يقال إن لغة البرمجة لها وظائف من الدرجة الأولى عندما يتم التعامل مع الوظائف في تلك اللغة مثل أي متغير آخر. بعض "الامتيازات" للوظائف من الدرجة الأولى: يمكن إسنادها كقيمة لمتغيرات بدون مشكلة const string = "Foo" const num = 2 const bool = false const greet = (name) => `Hello ${name}` greet('Ahmed') // Hello Ahmed يمكن تمريرها كمعاملات للوظائف const nums = [1, 2, 3, 4, 5] const addOne = (n) => n + 1 const addedOne = nums.map(addOne) // [2, 3, 4, 5, 6] يمكن إرجاعها كنتيجة من وظيفة ما const makeCounter = () => { let count = 0 return () => ++count } const counter = makeCounter() counter() // 1 counter() // 2 يمكن تخزينها في أي هياكل البيانات : يمكننا تخزين الوظائف في مصفوفات و يمكننا أيضًا تخزينها في كائنات وظائف الترتيب الأعلى هي وظائف تعمل على وظائف أخرى ، إما عن طريق أخذها كوسيطات أو عن طريق إعادتها. بكلمات بسيطة ، دالة الترتيب الأعلى هي وظيفة تتلقى دالة كوسيطة أو تُرجع الدالة كإخراج. على سبيل المثال ، Array.prototype.map و Array.prototype.filter و Array.prototype.reduce هي بعض وظائف الترتيب الأعلى المضمنة في اللغة. ولمعرفة الأهمية سنقوم بكتابة مثال من خلال وظائف الترتيب الأعلى وبدونها بدون وظيفة الترتيب الأعلى const birthYear = [1975, 1997, 2002, 1995, 1985]; const ages = []; for(let i = 0; i < birthYear.length; i++) { let age = 2018 - birthYear[i]; ages.push(age); } يمكنك تنفيذ البرنامج السابق ببساطة مع وظيفة الترتيب الأعلى map const birthYear = [1975, 1997, 2002, 1995, 1985]; const ages = birthYear.map(year => 2018 - year); 1 اقتباس
0 Talal Alharbi2 نشر 27 مارس 2023 الكاتب أرسل تقرير نشر 27 مارس 2023 ممتاز شرح واضح لكن الفايده من First function ماهو ؟ بتاريخ 15 ساعة قال عبدالباسط ابراهيم: تعتبر لغة البرمجة أنها تدعم وظائف الدرجة الأولى عندما لا يكون لها قيود / حدود على كيفية إنشاء الوظائف أو استخدامها.حيث يقال إن لغة البرمجة لها وظائف من الدرجة الأولى عندما يتم التعامل مع الوظائف في تلك اللغة مثل أي متغير آخر. بعض "الامتيازات" للوظائف من الدرجة الأولى: يمكن إسنادها كقيمة لمتغيرات بدون مشكلة const string = "Foo" const num = 2 const bool = false const greet = (name) => `Hello ${name}` greet('Ahmed') // Hello Ahmed يمكن تمريرها كمعاملات للوظائف const nums = [1, 2, 3, 4, 5] const addOne = (n) => n + 1 const addedOne = nums.map(addOne) // [2, 3, 4, 5, 6] يمكن إرجاعها كنتيجة من وظيفة ما const makeCounter = () => { let count = 0 return () => ++count } const counter = makeCounter() counter() // 1 counter() // 2 يمكن تخزينها في أي هياكل البيانات : يمكننا تخزين الوظائف في مصفوفات و يمكننا أيضًا تخزينها في كائنات وظائف الترتيب الأعلى هي وظائف تعمل على وظائف أخرى ، إما عن طريق أخذها كوسيطات أو عن طريق إعادتها. بكلمات بسيطة ، دالة الترتيب الأعلى هي وظيفة تتلقى دالة كوسيطة أو تُرجع الدالة كإخراج. على سبيل المثال ، Array.prototype.map و Array.prototype.filter و Array.prototype.reduce هي بعض وظائف الترتيب الأعلى المضمنة في اللغة. ولمعرفة الأهمية سنقوم بكتابة مثال من خلال وظائف الترتيب الأعلى وبدونها بدون وظيفة الترتيب الأعلى const birthYear = [1975, 1997, 2002, 1995, 1985]; const ages = []; for(let i = 0; i < birthYear.length; i++) { let age = 2018 - birthYear[i]; ages.push(age); } يمكنك تنفيذ البرنامج السابق ببساطة مع وظيفة الترتيب الأعلى map const birthYear = [1975, 1997, 2002, 1995, 1985]; const ages = birthYear.map(year => 2018 - year); اقتباس
0 عبدالباسط ابراهيم نشر 27 مارس 2023 أرسل تقرير نشر 27 مارس 2023 بتاريخ 1 دقيقة مضت قال طلال السحيمي: ممتاز شرح واضح لكن الفايده من First function ماهو ؟ الفائدة ببساطة لوظائف الدرجة الأولى في لغة البرمجة javascript أنه في بعض اللغات البرمجية الأخرى يكون لها قيود / حدود على كيفية إنشاء الوظائف أو استخدامها وليس كما في الشرح السابق فلا يمكنك يمكن إسنادها كقيمة لمتغيرات ولا يمكن تمريرها كمعاملات للوظائف إلخ اقتباس
0 Talal Alharbi2 نشر 27 مارس 2023 الكاتب أرسل تقرير نشر 27 مارس 2023 بتاريخ 4 دقائق مضت قال عبدالباسط ابراهيم: الفائدة ببساطة لوظائف الدرجة الأولى في لغة البرمجة javascript أنه في بعض اللغات البرمجية الأخرى يكون لها قيود / حدود على كيفية إنشاء الوظائف أو استخدامها وليس كما في الشرح السابق فلا يمكنك يمكن إسنادها كقيمة لمتغيرات ولا يمكن تمريرها كمعاملات للوظائف إلخ اعلم هذا ، لكن مالفائدة البرمجية من الامر ؟ اقتباس
0 Mustafa Suleiman نشر 27 مارس 2023 أرسل تقرير نشر 27 مارس 2023 بتاريخ 38 دقائق مضت قال طلال السحيمي: اعلم هذا ، لكن مالفائدة البرمجية من الامر ؟ تسمح بتمرير الدوال كمعاملات للدوال الأخرى، ويتم استخدامها بشكل شائع في البرمجة الوظيفية والبرمجة الشيئية، وتمكنك من كتابة الأكواد بشكل أكثر جودة وإنتاجية. على سبيل المثال، يمكن استخدام الدوال كمعاملات لدوال أخرى لتحسين الكود وجعله أكثر قابلية للصيانة وإعادة الاستخدام، كما يمكن إنشاء الوظائف واستخدامها كقيم لمتغيرات أو خصائص، مما يتيح للمطورين إنشاء برامج أكثر مرونة وقابلية للتوسع. هذا مثال بسيط لإنشاء واستخدام وظيفة من الدرجة الأولى في جافاسكريبت: // إنشاء دالة من الدرجة الأولى function greet(name) { console.log('Hello, ' + name + '!'); } // استخدام دالة كمعامل لدالة أخرى function sayHi(callback) { callback('John'); } // استخدام الدالة كقيمة لمتغير const myGreet = greet; myGreet('Mary'); // استخدام الدالة داخل دالة أخرى sayHi(function(name) { console.log('Hi, ' + name + '!'); }); الدالة greet هي دالة بسيطة تستقبل اسم وتطبع رسالة تحيي بها الشخص الذي يحمل هذا الاسم. ثم يتم استخدام هذه الدالة كمعامل في دالة sayHi. هذا يعني أن دالة sayHi تتوقع دالة (أي تعامل معها بطريقة مماثلة لطريقة تعاملها مع البيانات) كمدخل لها. بعد ذلك، يتم استدعاء الدالة الممررة إلى sayHi، والتي تكون الدالة greet في هذه الحالة، مع إعطاءها اسم "John" كوسيط. في السطر التالي، يتم إنشاء متغير جديد باسم myGreet، والذي يشير إلى نفس الدالة greet. ثم يتم استدعاء دالة sayHi مرة أخرى، لكن هذه المرة يتم تمرير دالة جديدة كوسيط، وهي دالة تستقبل اسمًا وتطبع رسالة تحيا بها الشخص الذي يحمل هذا الاسم. يتم تمرير هذه الدالة باستخدام دالة callback التي تمرر دالة كمعامل. يتم استدعاء الدالة الممررة إلى sayHi مع إعطائها اسم "John" كوسيط. سيتم تنفيذ الدالة الممررة، والتي تمرر لها الاسم "John"، وسيتم طباعة رسالة تحيا بها الشخص الذي يحمل هذا الاسم. اقتباس
السؤال
Talal Alharbi2
ماذا تعني هذه الامور بجافا سكريبت
First Class Function
Higher-Order Function
7 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.