ECMAScript 2020
জাভাস্ক্রিপ্ট 2020-এ নতুন বৈশিষ্ট্য
| বৈশিষ্ট্য | ব্যাখ্যা |
|---|---|
BigInt |
বড় মান সঞ্চয় করে যা জাভাস্ক্রিপ্ট নম্বরে সংরক্ষণ করা যায় না |
String matchAll() |
একটি স্ট্রিং-এ একটি স্ট্রিং এর সমস্ত ঘটনার জন্য অনুসন্ধান করে |
Promise.allSettled() |
প্রতিশ্রুতিগুলিকে ইনপুট হিসাবে নেয় এবং একটি একক প্রতিশ্রুতি প্রদান করে |
Dynamic Import |
রানটাইমে জাভাস্ক্রিপ্ট মডিউল লোড করে |
globalThis |
প্রতীকী প্রেক্ষাপট থেকে স্বাধীন বিশ্বব্যাপী বস্তুর প্রতিনিধিত্ব করে |
import.meta |
একটি মডিউলের ভিত্তি URL প্রতিনিধিত্বকারী একটি বস্তু প্রদান করে |
Namespace Exports |
আপনি প্রথমে আমদানি না করে আপনার নিজের মডিউল থেকে একটি সম্পূর্ণ নামস্থান রপ্তানি করতে পারেন |
2020 সালে নতুন জাভাস্ক্রিপ্ট অপারেটর
| আবর | ব্যাখ্যা |
|---|---|
?? |
প্রথম আর্গুমেন্টটি বাতিল না হলে নালিশ কোলেসিং রিটার্ন করে |
?. |
ঐচ্ছিক চেইনিং অনির্ধারিত রিটার্ন করে যদি কোনো বস্তু অনির্ধারিত বা শূন্য থাকে |
&&= |
প্রথম মান সত্য হলে লজিক্যাল AND অ্যাসাইনমেন্ট দ্বিতীয় মান নির্ধারণ করে |
||= |
প্রথম মান মিথ্যা হলে লজিক্যাল বা অ্যাসাইনমেন্ট দ্বিতীয় মান নির্ধারণ করে |
??= |
নালিশ কোলেসিং অ্যাসাইনমেন্ট দ্বিতীয় মান নির্ধারণ করে যদি প্রথম মানটি অনির্ধারিত বা শূন্য থাকে |
ব্রাউজার সমর্থন
ECMAScript 2020 সমস্ত আধুনিক ব্রাউজারে এপ্রিল 2021 থেকে সমর্থিত।
| Chrome | Edge | Firefox | Safari | Opera |
|---|---|---|---|---|
| 80 | 80 | 80 | 14.1 | 67 |
| ফেব্রুয়ারি 2020 | ফেব্রুয়ারি 2020 | আগস্ট 2020 | এপ্রিল 2021 | মার্চ 2020 |
JavaScript BigInt
JavaScript BigInt ভেরিয়েবলগুলি বড় পূর্ণসংখ্যার মানগুলি সংরক্ষণ করতে ব্যবহৃত হয় যা একটি সাধারণ জাভাস্ক্রিপ্ট নম্বর দ্বারা প্রতিনিধিত্ব করা যায় না।
জাভাস্ক্রিপ্ট পূর্ণসংখ্যা শুধুমাত্র 15 সংখ্যার জন্য সঠিক।
পূর্ণসংখ্যার উদাহরণ
let x = 999999999999999;
let y = 9999999999999999; // too big
BigInt উদাহরণ
let x = 9999999999999999;
let y = 9999999999999999n;
একটি পূর্ণসংখ্যার শেষে একটি BigInt তৈরি করতেnযোগ করুন বাBigInt()কল করুন:
উদাহরণ
let x = 1234567890123456789012345n;
let y = BigInt(1234567890123456789012345)
একটি BigInt এর জাভাস্ক্রিপ্টtypeof "bigint":
উদাহরণ
let x = BigInt(999999999999999);
let type = typeof x;
JavaScript String matchAll()
ES2020-এর আগে এমন কোনো স্ট্রিং পদ্ধতি ছিল না যা একটি স্ট্রিং-এ স্ট্রিংয়ের সমস্ত ঘটনা অনুসন্ধান করতে ব্যবহার করা যেতে পারে।
উদাহরণ
const iterator = text.matchAll("Cats");
যদি প্যারামিটারটি একটি নিয়মিত অভিব্যক্তি হয়, তাহলে গ্লোবাল পতাকা (g) সেট করতে হবে, অন্যথায় একটি TypeError নিক্ষেপ করা হবে।
উদাহরণ
const iterator = text.matchAll(/Cats/g);
অনুসন্ধানটি অক্ষর-সংবেদনশীল হলে, কেস-সংবেদনশীল পতাকা (i) সেট করা উচিত:
উদাহরণ
const iterator = text.matchAll(/Cats/gi);
দ্রষ্টব্য:
ES2021 স্ট্রিং পদ্ধতিreplaceAll()পরিচয় করিয়ে দেন
নালিশ কোলেসিং অপারেটর (??)
??প্রথম ব্যর্থতা শূন্য না হলে অপারেটর শূন্য ফেরত দেয়। অন্যথায় দ্বিতীয়টি ফেরত দেয়।
যদি প্রথম ক্র্যাশ শূন্য হয়??অপারেটর একটি দ্বিতীয় ব্যর্থতা প্রদান করে।
Nullish একটি শব্দ যা শূন্য বা অনির্ধারিত বর্ণনা করে।
??অপারেটর ডিফল্ট মান এবং লজিক্যাল OR অপারেটর ফেরত দিতে ব্যবহৃত হয়||থেকে ভিন্ন কারণ এটি শুধুমাত্র নাল এবং অসংজ্ঞায়িতকে "নালিশ" হিসাবে বিবেচনা করে এবং অন্যান্য "মিথ্যা" মান যেমন 0 বা খালি স্ট্রিংকে উপেক্ষা করে।
উদাহরণ
let name = null;
let text = "missing";
let result = name ?? text;
ঐচ্ছিক চেইনিং অপারেটর (?.)
ঐচ্ছিক চেইনিং অপারেটর অনির্ধারিত রিটার্ন করে যদি একটি অবজেক্ট অ্যাট্রিবিউট অনির্ধারিত বা নাল থাকে (একটি ত্রুটি নিক্ষেপ করার পরিবর্তে)।
উদাহরণ
const car = {type:"Fiat", model:"500", color:"white"};
let name = car?.name;
ঐচ্ছিক চেইনিং শুধুমাত্র অবজেক্ট প্রোপার্টি নয়, ফাংশন কল এবং অ্যারেতেও কাজ করে।
ফাংশন কল
| কেস ব্যবহার করুন | সিনট্যাক্স | আচরণ |
|---|---|---|
| একটি নিরাপদ ফাংশন কল | obj.method?.() |
পদ্ধতিটি বিদ্যমান না থাকলে অনির্ধারিত প্রদান করে |
| হ্যান্ডলিং রিটার্ন | let x = fn?.() |
fn হলে x অনির্ধারিত |
সারি
| কেস ব্যবহার করুন | সিনট্যাক্স | ফিরে আসবে |
|---|---|---|
| নিরাপদ উপাদান অ্যাক্সেস | arr?.[2] |
undefined যদি arr নাল বা undefined হয় |
| অঙ্গে একটি নিরাপদ বৈশিষ্ট্য | arr?.[1]?.name |
নিরাপদে অনির্ধারিত ফেরত |
| নিরাপদ মোড কল | arr?.map(fn) |
arr না থাকলে অনির্ধারিত ফেরত দেয় |
| ডিফল্ট মান পতনশীল | arr?.[0] ?? "N/A" |
arr বা উপাদান অনুপস্থিত থাকলে "N/A" প্রদান করে |
&&= অপারেটর
লজিক্যাল এবং অ্যাসাইনমেন্ট অপারেটর দুটি মানের মধ্যে ব্যবহার করা হয়।
প্রথম মান সত্য হলে, দ্বিতীয় মান নির্ধারণ করা হয়।
লজিক্যাল এবং অ্যাসাইনমেন্টের উদাহরণ
let x = 10;
x &&= 5;
||= অপারেটর
লজিক্যাল বা অ্যাসাইনমেন্ট অপারেটর দুটি মানের মধ্যে ব্যবহার করা হয়।
প্রথম মান মিথ্যা হলে, দ্বিতীয় মান নির্ধারণ করা হয়।
লজিক্যাল বা অ্যাসাইনমেন্টের উদাহরণ
let x = 10;
x ||= 5;
??= অপারেটর
নালিশ কোলেসিং অ্যাসাইনমেন্ট অপারেটর দুটি মানের মধ্যে ব্যবহৃত হয়।
প্রথম মানটি অনির্ধারিত বা শূন্য হলে, দ্বিতীয় মানটি বরাদ্দ করা হয়।
শূন্য কোলেসিং অ্যাসাইনমেন্টের উদাহরণ
let x;
x ??= 10;
JavaScript Promise.allSettled()
Promise.allSettled()পদ্ধতিটি প্রতিশ্রুতির তালিকা থেকে একটি একক প্রতিশ্রুতি প্রদান করে।
উদাহরণ
// Create a Promise
const myPromise1 = new Promise((resolve, reject) => {
setTimeout(resolve, 200, "King");
});
// Create another Promise
const myPromise2 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, "Queen");
});
// Settle All
Promise.allSettled([myPromise1, myPromise2]).then((results) =>
results.forEach((x) => myDisplay(x.status)),
);
দ্রষ্টব্য:
Promise.allSettled()মানে "সকল প্রতিশ্রুতি চালান। আমি ফলাফল নিয়ে চিন্তা করি না"।
JavaScript Dynamic Import
ডাইনামিক ইম্পোর্ট হল আপনার প্রোগ্রামের শুরুতে না হয়ে রানটাইমে জাভাস্ক্রিপ্ট মডিউল লোড করার একটি উপায়।
সিনট্যাক্স
import("./module.js")
- আর্গুমেন্টটি অবশ্যই একটি স্ট্রিং বা এক্সপ্রেশন হতে হবে যা একটি পাথে সমাধান করে
- আপনি ব্যাচ স্ক্রিপ্ট ব্যবহার করতে পারেন (
<script type="module">) ভিতরে আমদানি চালাতে
স্ট্যাটিক ইম্পোর্টের বিপরীতে (যা অবশ্যই একটি ফাইলের শীর্ষে উপস্থিত হতে হবে), গতিশীল আমদানি যেকোনো জায়গায় ব্যবহার করা যেতে পারে - ভিতরের ফাংশন, শর্ত, ইভেন্ট হ্যান্ডলার ইত্যাদি।
| টাইপ | উদাহরণ | যখন লোড হয় |
|---|---|---|
| স্থির | import { add } from './math.js'; |
লোড করার সময় |
| গতিশীল | const math = await import('./math.js'); |
যখন প্রয়োজন |
ECMAScript 2020 টিউটোরিয়াল
এই টিউটোরিয়ালটি আপনাকে ECMAScript 2020 নতুন বৈশিষ্ট্য সম্পর্কে আপনার জ্ঞান পরীক্ষা করতে সাহায্য করবে।