ECMAScript হলো একটি স্ট্যান্ডার্ড, যা জাভাস্ক্রিপ্টসহ অন্যান্য স্ক্রিপ্টিং ভাষার জন্য একটি নির্দিষ্ট নিয়মাবলী এবং বৈশিষ্ট্য সংজ্ঞায়িত করে। ECMAScript এর ইতিহাস শুরু হয় ১৯৯৫ সালে, যখন Netscape Communications কোম্পানি জাভাস্ক্রিপ্ট ভাষাটি তৈরি করেছিল। পরবর্তীতে ১৯৯৭ সালে ECMA International একটি অফিসিয়াল স্ট্যান্ডার্ড হিসেবে ECMAScript নামকরণ করে।
ECMAScript এর প্রধান সংস্করণ
- ECMAScript 1 (1997): ECMAScript-এর প্রথম সংস্করণটি ১৯৯৭ সালে প্রকাশিত হয় এবং এটি জাভাস্ক্রিপ্টের একটি মূল ভিত্তি হিসেবে কাজ করে।
- ECMAScript 2 (1998): এই সংস্করণে কিছু মাইনর সংশোধন করা হয়।
- ECMAScript 3 (1999): এই সংস্করণে অনেক নতুন বৈশিষ্ট্য যোগ করা হয়, যেমন: নিয়মিত এক্সপ্রেশন (regular expressions), নতুন কন্ট্রোল স্টেটমেন্ট এবং উন্নত ফাংশনালিটি।
- ECMAScript 4 (রদ করা হয়): ECMAScript 4 এর জন্য কিছু প্রস্তাবনা ছিল, তবে এটি অতিরিক্ত জটিলতা এবং অন্যান্য সমস্যার কারণে বাতিল করা হয়।
- ECMAScript 5 (2009): ES5 একটি বড় সংস্করণ ছিল, যেখানে 'strict mode' এবং উন্নত অ্যারে মেথডগুলি অন্তর্ভুক্ত ছিল।
- ECMAScript 6 (2015): ES6 বা ECMAScript 2015 ছিল একটি মাইলফলক সংস্করণ, যা নতুন ফিচার এবং সিনট্যাক্স প্রবর্তন করে জাভাস্ক্রিপ্টের ক্ষমতাকে ব্যাপকভাবে প্রসারিত করেছে। এর পরবর্তী সংস্করণগুলি, যেমন ES7, ES8, ইত্যাদি প্রতি বছর প্রকাশিত হয়।
ES6 এর বৈশিষ্ট্য
ECMAScript 6 (ES6), যা ECMAScript 2015 নামেও পরিচিত, জাভাস্ক্রিপ্টের একটি গুরুত্বপূর্ণ আপডেট। এটি নতুন নতুন ফিচার এবং সিনট্যাক্সের মাধ্যমে কোডিংকে আরও সহজ, দ্রুত এবং শক্তিশালী করে তোলে। ES6-এর কিছু উল্লেখযোগ্য বৈশিষ্ট্য নিচে আলোচনা করা হলো:
1. let এবং const
ES6-এ নতুন দুইটি কিওয়ার্ড, let এবং const যুক্ত করা হয়েছে, যা পুরনো var কিওয়ার্ডের তুলনায় আরো নির্ভরযোগ্য এবং নিরাপদ।
- let: ব্লক স্কোপড (block-scoped) ভেরিয়েবল ডিক্লেয়ার করতে ব্যবহৃত হয়।
- const: কনস্ট্যান্ট (constant) ভেরিয়েবল ডিক্লেয়ার করতে ব্যবহৃত হয়, যার মান একবার নির্ধারণ করার পর পরিবর্তন করা যায় না।
let name = "John";
const age = 30;
2. অ্যারে ডিস্প্রেসিং (Array Destructuring)
এই বৈশিষ্ট্যের মাধ্যমে, অ্যারে থেকে একাধিক ভ্যালু একসাথে ডিক্লেয়ার করা যায়।
let [firstName, lastName] = ["John", "Doe"];
console.log(firstName); // "John"
console.log(lastName); // "Doe"
3. অবজেক্ট ডিস্প্রেসিং (Object Destructuring)
অবজেক্ট থেকে ভ্যালু এক্সট্র্যাক্ট করতে ডিস্প্রেসিং ব্যবহার করা হয়।
let person = { name: "John", age: 30 };
let { name, age } = person;
console.log(name); // "John"
console.log(age); // 30
4. স্প্রেড অপারেটর (Spread Operator)
স্প্রেড অপারেটর ... ব্যবহার করে একটি অ্যারে বা অবজেক্টের সমস্ত উপাদানকে নতুন একটি অ্যারে বা অবজেক্টে কপি করা যায়।
let arr1 = [1, 2, 3];
let arr2 = [...arr1, 4, 5];
console.log(arr2); // [1, 2, 3, 4, 5]
5. টেমপ্লেট লিটারেল (Template Literals)
টেমপ্লেট লিটারেল স্ট্রিং তৈরির ক্ষেত্রে ইন্টারপোলেশন এবং এক্সপ্রেশন ব্যবহার করার সুবিধা দেয়।
let name = "John";
let greeting = `Hello, ${name}!`;
console.log(greeting); // "Hello, John!"
6. এ্যারো ফাংশন (Arrow Functions)
এ্যারো ফাংশন সিনট্যাক্স => ব্যবহার করে ফাংশন ডেফিনিশনকে সহজ এবং সংক্ষিপ্ত করে তোলে।
let add = (a, b) => a + b;
console.log(add(2, 3)); // 5
7. প্রোমিস (Promises)
প্রোমিস অ্যাসিঙ্ক্রোনাস কোড পরিচালনার জন্য একটি নতুন পদ্ধতি প্রদান করে, যা then() এবং catch() মেথডের মাধ্যমে অ্যাসিঙ্ক্রোনাস অপারেশন পরিচালনা করতে সহায়ক।
let promise = new Promise((resolve, reject) => {
let success = true;
if (success) {
resolve("Operation successful");
} else {
reject("Operation failed");
}
});
8. ক্লাস (Classes)
ES6-এ ক্লাস কনসেপ্ট যুক্ত করা হয়, যা OOP (Object-Oriented Programming) স্টাইলের প্রোগ্রামিংকে আরও সহজ এবং পরিষ্কার করে তোলে।
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, ${this.name}`);
}
}
9. মডিউল (Modules)
ES6-এ মডিউল কনসেপ্ট যোগ করা হয়েছে, যার মাধ্যমে আপনি কোডের বিভিন্ন অংশ আলাদা আলাদা ফাইলের মধ্যে রাখতে পারেন এবং একে অপরের সাথে ইমপোর্ট-এক্সপোর্ট করতে পারেন। এটি কোড রিভিউ, রক্ষণাবেক্ষণ এবং পুনঃব্যবহারযোগ্যতা সহজ করে।
// math.js
export function add(a, b) {
return a + b;
}
// app.js
import { add } from './math';
console.log(add(2, 3)); // 5
ES6 এর এই বৈশিষ্ট্যগুলি জাভাস্ক্রিপ্টকে আরও শক্তিশালী, পরিষ্কার এবং কার্যকরী করে তোলে, যা ডেভেলপারদের জন্য কাজকে অনেক সহজ এবং দ্রুততর করে তোলে। ES6-এর পরবর্তী সংস্করণগুলিতে (যেমন ES7, ES8) আরও কিছু উন্নতি এবং বৈশিষ্ট্য যুক্ত হয়েছে, তবে ES6 ছিল জাভাস্ক্রিপ্টের ইতিহাসে একটি মাইলফলক সংস্করণ।