ماڈیول اسباق (3/4)
پہلے سے طے شدہ اور باقی پیرامیٹرز
JavaScript آپ کو پیرامیٹرز اختیاری بنانے دیتا ہے (پہلے سے طے شدہ قدر کے ساتھ)
اور باقی آپریٹر (...) کے ساتھ دلائل کی متغیر تعداد کو قبول کریں۔
پہلے سے طے شدہ پیرامیٹرز
function saluta(nome, prefisso = 'Ciao') {
return `${prefisso}, ${nome}!`;
}
saluta('Anna'); // 'Ciao, Anna!'
saluta('Marco', 'Buongiorno'); // 'Buongiorno, Marco!'ڈیفالٹ صرف اس وقت لاگو ہوتا ہے جب دلیل undefined ہو (بشمول "پاس نہیں کیا گیا" کیس)۔
null یا 0 کے لیے ڈیفالٹ نہیں کہک ان کرتا ہے:
function f(x = 10) {
return x;
}
f(); // 10
f(undefined); // 10
f(null); // null
f(0); // 0باقی: ...names
دلائل کی متغیر تعداد کو قبول کرنے کے لیے، انہیں ... کے ساتھ ایک صف میں جمع کریں:
function somma(...numeri) {
let totale = 0;
for (const n of numeri) totale += n;
return totale;
}
somma(); // 0
somma(5); // 5
somma(1, 2, 3, 4); // 10فنکشن کے اندر، numeri ایک حقیقی صف ہے (پرانے فنکشنز کا جادو arguments آبجیکٹ نہیں)۔
باقی آخری پیرامیٹر ہونا چاہیے:
function f(primo, ...altri) {
/* ok */
}
// function f(...altri, ultimo) {} // SyntaxErrorکال کے وقت پھیلائیں۔
... کا دوسرا چہرہ اسپریڈ آپریٹر ہے، جو کال کے وقت الگ الگ دلیلوں میں ایک صف کو "پھٹا" دیتا ہے:
function somma(a, b, c) {
return a + b + c;
}
const nums = [1, 2, 3];
somma(...nums); // 6, equivalent to somma(1, 2, 3)اسے آزمائیں
ایک فنکشن `sum(a, b)` کی وضاحت کریں جہاں `b` کی ڈیفالٹ ویلیو 0 ہے۔ اسے ان دعوؤں کو پاس کرنا چاہیے: sum(5) === 5، sum(2, 3) === 5، sum(0) === 0۔
اشارہ دکھائیں۔
فنکشن sum(a, b = 0) { واپس a + b; }
3 کوششوں کے بعد حل دستیاب ہے۔
ورزش کا جائزہ لیں۔
ایک فنکشن `میان(...نمز)` کی وضاحت کریں جو اس کے آرگیومینٹس کا ریاضی کا مطلب لوٹاتا ہے، یا 0 اگر کوئی پاس نہیں ہوتا ہے۔
اشارہ دکھائیں۔
اگر nums.length 0 ہے، 0 واپس کریں؛ دوسری صورت میں جمع اور تقسیم.
3 کوششوں کے بعد حل دستیاب ہے۔