8.16. Exponential Operator এবং Trailing Comma

 

Exponential Operator

Exponential Operator একটি operand এর power দ্বিতীয় operand এর power পর্যন্ত উত্থাপন করে তার value কে return করে।
সাধারণভাবে গণিতে আমরা ২^৩ = ৮ , ২^৫= ৩২, ১০^-১ = ০.১ কে বুঝাই। একই ভাবে জাভাস্ক্রিপ্টেএ syntax অনুসারে 2 ** 3 = 8, 2 ** 5 = 32, 10^-1 = 0.1 কে বুঝানো হয়। Exponential operator right associative way তে কাজ করে। অর্থাৎ বাম-ডান ও ডান-বাম দিকে একটা সমান preference এ কাজ করে।
a ** b ** c = a ** (b ** c)

Examples:

2 ** 3   // 8
3 ** 2   // 9
3 ** 2.5 // 15.588457268119896
10 ** -1 // 0.1
NaN ** 2 // NaN
 
2 ** 3 ** 2   // 512
2 ** (3 ** 2) // 512
(2 ** 3) ** 2 // 64
 
-(2 ** 2) // -4
(-2) ** 2 // 4

 

Trailing commas:

কোডে নতুন এলিমেন্ট/প্যারামিটার/প্রোপার্টি যোগ করার সময় এটি useful হতে পারে। উদাহরণস্বরূপ একটা নতুন প্রোপার্টি যুক্ত করার সময় যদি আগের লাইনে ইতোমধ্যে trailing comma থাকে, তাহলে সেটাকে কোনো রকম পরিবর্তন করা ছাড়াই নতুন লাইন যুক্ত করা যাবে। এর মাধ্যমে ভার্সন কন্ট্রোল ক্লিন হবে এবং কোড সহজেই এডিট করা যাবে।

জাভাস্ক্রিপ্টে শুরু থেকেই array literals এ trailing commas ব্যবহার করার সুযোগ দেওয়া হয়েছে। পরবর্তীতে object literals আর function parameters এও এই সুবিধা যুক্ত করা হয়েছে।

Example-1:

const arr = [1, 2, 3, ,];
console.log(arr, arr.length);

Output:
[1, 2, 3, ], 4

Example-2:

const obj = {
name : ‘Random’,
age : 38,
married: false,
};
const {p, q, r, } = obj;

Example-3:

function f(p) {} —————> function f(p,) {}
(p) => {}; —————> (p,) => {};
// এগুলো একই

Example-4:

const [a, b,] = [1, 2];
// এটা ঠিক

const [a, ...b,] = [1, 2, 3];
// এটা ভুল কারণ rest এলিমেন্টের কখনো trailing comma থাকতে পারবে না