"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني تمرير عدد متغير من الوسائط إلى وظائف JavaScript؟

كيف يمكنني تمرير عدد متغير من الوسائط إلى وظائف JavaScript؟

تم النشر بتاريخ 2024-11-18
تصفح:179

How Can I Pass a Variable Number of Arguments to JavaScript Functions?

تمرير عدد متغير من الوسائط إلى وظائف JavaScript

توفر JavaScript المرونة في تمرير الوسائط إلى الوظائف، بما في ذلك القدرة على إرسال عدد متغير من الوسائط من مصفوفة.

متغير Arity عبر الوسيطات

مثل Python، تحتوي JavaScript على كائن وسائط خاص يمثل جميع الوسائط التي تم تمريرها إلى دالة. يحتوي هذا الكائن على كل وسيطة كخاصية قابلة للفهرسة. على سبيل المثال:

function func() {
  console.log(arguments.length);
  for (arg in arguments) console.log(arg);
}

func('a', 'b', 'c', 'd'); // prints 4 and 'a', 'b', 'c', 'd'

تمرير مصفوفة كوسيطات

ومع ذلك، لن يؤدي تمرير مصفوفة مباشرة إلى دالة كوسيطات تحقيق النتيجة المرجوة. بدلاً من ذلك، سيتم التعامل مع الصفيف نفسه كوسيطة واحدة. لتمرير مصفوفة كوسيطات فردية، يمكنك استخدام طريقة application():

var arr = ['a', 'b', 'c'];

function func() {
  console.log(this); // 'test'
  console.log(arguments.length); // 3

  for (var i = 0; i 

سيؤدي هذا إلى طباعة 'test' و3 و'a' و'b' و'c'.

صيغة الانتشار (ES6)

منذ ES6، قدمت جافا سكريبت صيغة الانتشار (...)، والتي توفر طريقة أكثر إيجازًا لتحقيق نفس الشيء النتيجة:

func(...arr);

سيؤدي هذا إلى توسيع عناصر arr إلى وسيطات فردية تم تمريرها إلى الوظيفة.

المعلمات المسماة باستخدام بناء الجملة المنتشر (ES6) )

يمكنك أيضًا دمج المعلمات المسماة مع صيغة الانتشار لتحديد أنه يجب التعامل مع بعض الوسائط كمصفوفة:

function func(first, second, ...theRest) {
  //...
}

الاستنتاج

تسمح JavaScript بتمرير عدد متغير من الوسائط إلى الوظائف من خلال كائن الوسائط أو، في ES6 والإصدارات الأحدث، باستخدام بناء جملة الانتشار. تتيح هذه المرونة مجموعة متنوعة من حالات الاستخدام، مثل إنشاء وظائف عامة يمكنها التعامل مع عدد عشوائي من المدخلات.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3