# पैरामीटर और फ़र्स्ट-क्लास फ़ंक्शन — जावास्क्रिप्ट

Source: https://www.geekswithgeeks.com/hi/javascript/js-params-first-class

> डिफ़ॉल्ट व rest पैरामीटर, और मानों की तरह फ़ंक्शन।

## डिफ़ॉल्ट पैरामीटर

किसी पैरामीटर को फ़ॉलबैक मान दें जो आर्ग्युमेंट न मिलने पर उपयोग हो।

```js
function greet(name = "Guest") {
  return `Hello, ${name}!`;
}
console.log(greet());        // Hello, Guest!
console.log(greet("Ada"));   // Hello, Ada!
```

## Rest पैरामीटर

`...args` किसी भी संख्या में अतिरिक्त आर्ग्युमेंट को एक असली array में इकट्ठा करता है।

```js
function sum(...nums) {
  return nums.reduce((a, b) => a + b, 0);
}
console.log(sum(1, 2, 3, 4));  // 10
```

## फ़ंक्शन भी मान हैं

JS फ़ंक्शन **फ़र्स्ट-क्लास** हैं — इन्हें वेरिएबल में रखें, आर्ग्युमेंट के रूप में भेजें, या दूसरे फ़ंक्शन से लौटाएँ।

## फ़ंक्शन को आगे भेजना

जो फ़ंक्शन किसी दूसरे फ़ंक्शन को लेता या लौटाता है, उसे **हायर-ऑर्डर फ़ंक्शन** कहते हैं।

```js
function operate(a, b, fn) {
  return fn(a, b);
}
console.log(operate(4, 2, (a, b) => a - b));  // 2
```
