... সিনট্যাক্স কোথায় ব্যবহৃত হচ্ছে তার উপর নির্ভর করে দুটো বিপরীত কাজের একটা করে: rest বেশ কয়েকটা মানকে একটি array-তে সংগ্রহ করে, spread একটি array-কে (বা object) বেশ কয়েকটা মানে expand করে।
বাকি যেকোনো সংখ্যক argument একটি আসল array-তে জড়ো করে — পুরনো, array-এর মতো arguments object-এর একটি modern replacement।
function sum(...numbers) {
return numbers.reduce((total, n) => total + n, 0)
}
sum(1, 2, 3) // 6
sum(1, 2, 3, 4, 5) // 15const [first, ...rest] = [10, 20, 30, 40]
first // 10
rest // [20, 30, 40]
const { name, ...otherFields } = { name: 'Sam', age: 28, city: 'Delhi' }
otherFields // { age: 28, city: 'Delhi' }const a = [1, 2, 3]
const b = [4, 5, 6]
const combined = [...a, ...b]
// [1, 2, 3, 4, 5, 6]
Math.max(...a) // 3 — array-কে আলাদা argument-এ spread করেconst defaults = { theme: 'light', fontSize: 16 }
const userPrefs = { fontSize: 20 }
const settings = { ...defaults, ...userPrefs }
// { theme: 'light', fontSize: 20 } — পরের key আগেরটাকে override করে| Context | মানে |
|---|---|
| একটি function parameter list-এ ...args | Rest — argument-কে একটি array-তে সংগ্রহ করে |
| একটি array বা function call-এর ভেতরে ...arr | Spread — একটি array-কে আলাদা মানে expand করে |
| একটি object literal-এর ভেতরে ...obj | Spread — একটি object-এর নিজের property copy করে |
এটা পরে কোথায় দেখা যায়
Object spread ({ ...original, updatedField: value }) React আর অনুরূপ framework-এ immutably state আপডেট করার standard উপায় — সেই কোর্সের আগে এই সিনট্যাক্সে স্বাচ্ছন্দ্য থাকার যোগ্য।