Rest এবং Spread অপারেটর দুইটি ভিন্ন উদ্দেশ্যে ব্যবহৃত হয়, তবে উভয়েই ... চিহ্ন ব্যবহার করে। তাদের ব্যবহারের প্রেক্ষাপট এবং কাজের মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে। নিচে Rest এবং Spread এর মধ্যে পার্থক্য বিশদভাবে আলোচনা করা হলো।
1. Rest Operator (পারামিটার সংগ্রহের জন্য)
Rest Operator ... ব্যবহার করা হয় ফাংশনের প্যারামিটার হিসেবে, যেখানে এটি একাধিক আর্গুমেন্ট বা উপাদান একত্রিত করে একটি অ্যারে বা অবজেক্টে রূপান্তর করে।
- ব্যবহার: এটি একাধিক আর্গুমেন্ট একত্রিত করতে ব্যবহৃত হয় এবং তা একটি নতুন অ্যারে বা অবজেক্টে জমা করে।
- ফাংশনের প্যারামিটার: যখন কোনো ফাংশন বহু প্যারামিটার নেয় এবং সেই প্যারামিটারগুলোর সংখ্যা পরিবর্তনশীল, তখন rest ব্যবহার করা হয়।
উদাহরণ:
// Rest with function parameters
function sum(...numbers) {
return numbers.reduce((acc, num) => acc + num, 0);
}
console.log(sum(1, 2, 3, 4)); // 10
এখানে, ...numbers সমস্ত আর্গুমেন্টকে একটি অ্যারে আকারে সংরক্ষণ করছে। তারপর সেই অ্যারের সব মান যোগ করা হয়েছে।
আরও একটি উদাহরণ:
// Rest with object destructuring
const person = { name: "John", age: 30, country: "USA" };
const { name, ...rest } = person;
console.log(name); // "John"
console.log(rest); // { age: 30, country: "USA" }
এখানে ...rest বাকী অবজেক্টের সকল প্রপার্টি একত্রিত করে একটি নতুন অবজেক্টে রূপান্তরিত হয়েছে।
2. Spread Operator (ডাটা বিভাজন বা কপি করার জন্য)
Spread Operator ... ব্যবহার করা হয় কোনো অ্যারে বা অবজেক্টের ভিতরের উপাদানগুলোকে বিস্তৃত (spread) বা কপি করার জন্য।
- ব্যবহার: এটি একটি অ্যারে বা অবজেক্টের উপাদানগুলোকে নতুন অ্যারে বা অবজেক্টে বিস্তৃত করে (spread) দেয়।
- অ্যারে বা অবজেক্ট কপি/বিস্তার: এক অ্যারে বা অবজেক্টের উপাদানগুলোকে অন্য অ্যারে বা অবজেক্টে কপি বা একত্রিত করার জন্য ব্যবহৃত হয়।
উদাহরণ:
// Spread with arrays
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5];
console.log(arr2); // [1, 2, 3, 4, 5]
এখানে ...arr1 arr1 অ্যারের সব উপাদানকে বিস্তৃত (spread) করে নতুন অ্যারে arr2 তে যুক্ত করেছে।
অবজেক্টের ক্ষেত্রে:
// Spread with objects
const person = { name: "John", age: 30 };
const newPerson = { ...person, country: "USA" };
console.log(newPerson); // { name: "John", age: 30, country: "USA" }
এখানে ...person অবজেক্টের সব প্রপার্টিকে নতুন অবজেক্ট newPerson তে কপি করেছে এবং নতুন প্রপার্টি country যুক্ত করেছে।
Rest এবং Spread এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Rest | Spread |
|---|---|---|
| ব্যবহার | ফাংশনের প্যারামিটার বা অবজেক্ট/অ্যারে ডেস্ট্রাকচারিংয়ে একত্রিত করার জন্য | অ্যারে বা অবজেক্টের উপাদান বিস্তৃত (spread) বা কপি করার জন্য |
| কাজ | একাধিক প্যারামিটার বা প্রপার্টি একত্রিত করে একটি একক ডাটা (অ্যারে/অবজেক্ট) তৈরি করে | একটি ডাটা (অ্যারে/অবজেক্ট) থেকে উপাদানগুলো আলাদা করে অন্য ডাটাতে ছড়িয়ে দেয় |
| ব্যবহারের স্থান | ফাংশন প্যারামিটার, অবজেক্ট/অ্যারে ডেস্ট্রাকচারিং | অ্যারে/অবজেক্ট কপি বা একত্রিত করতে, নতুন অ্যারে/অবজেক্ট তৈরি করতে |
| সিনট্যাক্স | ... (প্যারামিটার হিসেবে) | ... (অ্যারে বা অবজেক্টের উপাদান হিসেবে) |
Rest এবং Spread এর উদাহরণ
Rest Example:
// Rest in function parameters
function greet(firstName, lastName, ...otherInfo) {
console.log(firstName, lastName); // John Doe
console.log(otherInfo); // ["age: 30", "city: New York"]
}
greet("John", "Doe", "age: 30", "city: New York");
Spread Example:
// Spread in arrays
const numbers1 = [1, 2, 3];
const numbers2 = [...numbers1, 4, 5];
console.log(numbers2); // [1, 2, 3, 4, 5]
// Spread in objects
const user = { name: "John", age: 30 };
const updatedUser = { ...user, country: "USA" };
console.log(updatedUser); // { name: "John", age: 30, country: "USA" }
সারাংশ
- Rest: একাধিক উপাদান বা প্যারামিটারকে একত্রিত করে একটি একক ডাটা তৈরি করতে ব্যবহৃত হয়।
- Spread: একটি ডাটা থেকে উপাদানগুলো বিস্তৃত করে অন্য ডাটাতে কপি বা যুক্ত করতে ব্যবহৃত হয়।
এই পার্থক্যগুলি ES6 এর Rest এবং Spread অপারেটর ব্যবহারকারীদের কাছে খুবই গুরুত্বপূর্ণ এবং বিভিন্ন পরিস্থিতিতে যথাযথভাবে এগুলির ব্যবহার করা প্রয়োজন।
Read more