اذهب إلى المحتوى

السؤال

نشر

عندى فانكشن ولها ثلاثة براميترات .. انا اريد ان استخدم اثنين منهم فقط .. كيف ذلك ؟
انا اريد استدعاء تلك الفانكشن لكن بدون اسخدام البراميتر b مثلا .. مالذى يجب وضعه مكانه عند الاستدعاء 


const test = (a, b, c) => {
  return a + b + c
}

const sum  = test(5,null,10)
console.log(sum)
// log >> 15

انا هنا استخدمت null لكنى اريد طريقة اخرى لان null  تظهرلى خطأ عندما استخدمها فى مشروعى مع انها هنا تعمل 

Recommended Posts

  • 1
نشر

بجانب إعطاء المعامل قيمة افتراضية في تعريفه ضمن الدالة سيكون عليك إما عدم تمريره في حالة كون ترتيب هذا المعامل الأخير وإلا فسيمكنك تمرير undefined ليتم اعتبار القيمة الافتراضية لهذا المتغير.

مثال:

const test = (a, b = 0, c) => {
  return a + b + c
}

الإستدعاء:

const sum  = test(5,undefined,10)
console.log(sum) // 15

ولكن بشكل عام، يفضل لأسباب مثل المحافظة على نظافة الشيفرة وتجنب أية مشاكل يقترح جعل هاته المعاملات في آخر الترتيب مثلما أشار المدرب محمد، ولكن ان اضطررت لسبب ما لعدم ذلك فسيمكنك العمل بما تم توضيحه حول undefined.

وبشكل خاص، ككتابة أفضل وإستعمال أكثر مرونة لدالة تعيد مجموع معاملات، يمكنك عن طريق بعض التتايل قبول عدد لا متناهي من المعاملات عن طريق إستعمال هاته الصيغة:

function sum(...nums){}

حيث سيمكن إستدعاءها كـ:

sum(1,2,4)

أو:

sum(1,2,68,7,5,654,353,342)

تستقبل الدالة sum مصفوفة من المعاملات التي يتم تمريرها عبرها. 

يمكننا إستعمال الدالة reduce المضمنة في جافاسكربت لإختزال هاته المعاملات في معامل واحد:

function sum(...nums){
   return nums.reduce((a, b) => a + b);
}

الناتج:

sum(1,2,4) // 7
sum(1,2,68,7,5,654,353,342) // 1432
sum(1,2,68,7,5,654,353,342,63,537,3256,3561,675,647,2362) // 12533
  • تعرف أكثر على الدالة reduce .
  • 0
نشر

يمكنك اعطاء المتغير c قيمة افتراضية ولتكن 0 كالتالي

        const test = (a, b, c = 0) => {
            return a + b + c
        }

دائما احرص على كتابة البارميترات التي لها قيم افتراضية مكتوبة في آخر الباراميترات لكي لا يحدث مشاكل , عند استدعاء الدالة يكون بهذا الشكل

const sum = test(5, 10)
        console.log(sum)

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...