var এর সাথে পার্থক্য

লেট (let) এবং কনস্ট (const) কীওয়ার্ড - জাভাস্ক্রিপ্ট ইএস৬ (ES6) - Web Development

290

var এর সাথে let এবং const এর পার্থক্য

var, let এবং const সবগুলোই জাভাস্ক্রিপ্টে ভ্যারিয়েবল ঘোষণা করার জন্য ব্যবহৃত হয়, তবে এই তিনটি কীওয়ার্ডের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। var কিওয়ার্ড ES5 এ ছিল, যেখানে let এবং const ES6 (ECMAScript 2015) এ প্রবর্তিত হয়। নিচে var, let, এবং const এর মধ্যে পার্থক্যগুলি বিস্তারিতভাবে আলোচনা করা হলো:


1. স্কোপ (Scope)

  • var: var কিওয়ার্ড গ্লোবাল স্কোপ বা ফাংশন স্কোপে ভ্যারিয়েবল ডিক্লেয়ার করে। এর মানে হলো, var দিয়ে ডিক্লেয়ার করা ভ্যারিয়েবল ফাংশনের বাইরে থেকেও অ্যাক্সেস করা যেতে পারে (গ্লোবাল স্কোপে) বা একে ফাংশনের মধ্যে সীমাবদ্ধ করা যায়।

    var name = "John";  // গ্লোবাল স্কোপে ভ্যারিয়েবল
    function greet() {
      var age = 30;  // ফাংশন স্কোপে ভ্যারিয়েবল
    }
    console.log(name); // "John" (গ্লোবাল স্কোপে)
    console.log(age);  // এরর (ফাংশন স্কোপে)
    
  • let এবং const: let এবং const কেবলমাত্র ব্লক স্কোপড, অর্থাৎ এগুলি শুধুমাত্র সেই ব্লকের মধ্যে (যেমন if statement, loop) প্রযোজ্য যেখানে এগুলি ডিক্লেয়ার করা হয়। ব্লক স্কোপড ভ্যারিয়েবলগুলি ফাংশনের বাইরে অ্যাক্সেস করা যাবে না।

    if (true) {
      let name = "John";
      const age = 30;
    }
    console.log(name);  // এরর (ব্লক স্কোপে)
    console.log(age);   // এরর (ব্লক স্কোপে)
    

2. হোইস্টিং (Hoisting)

  • var: var ভ্যারিয়েবল হোইস্টিং হয়, তবে এটি undefined হিসেবে প্রাথমিকভাবে হোইস্ট হয়, মানে আপনি ভ্যারিয়েবলটি ডিক্লেয়ার হওয়ার আগে ব্যবহার করতে পারবেন, তবে তার মান undefined হবে।

    console.log(name);  // undefined
    var name = "John";
    console.log(name);  // "John"
    
  • let এবং const: let এবং const উভয়ই hoisting এর মাধ্যমে উঠলেও, এগুলির জন্য Temporal Dead Zone (TDZ) থাকে, যার মানে হল যে, এগুলির ব্যবহার ডিক্লেয়ার হওয়ার আগে করা যাবে না। যদি আপনি এগুলি ডিক্লেয়ার হওয়ার আগে ব্যবহার করেন, তাহলে ত্রুটি (error) হবে।

    console.log(name);  // Error: Cannot access 'name' before initialization
    let name = "John";
    

3. মান পরিবর্তনযোগ্যতা (Reassignability)

  • var: var দ্বারা ডিক্লেয়ার করা ভ্যারিয়েবলটি পরিবর্তনযোগ্য (mutable), অর্থাৎ এর মান আপনি যে কোনো সময় পরিবর্তন করতে পারবেন।

    var name = "John";
    name = "Doe";  // পরিবর্তন করা সম্ভব
    console.log(name);  // "Doe"
    
  • let: let দিয়ে ডিক্লেয়ার করা ভ্যারিয়েবলটি পরিবর্তনযোগ্য (mutable), এর মানও আপনি পরিবর্তন করতে পারবেন।

    let name = "John";
    name = "Doe";  // পরিবর্তন করা সম্ভব
    console.log(name);  // "Doe"
    
  • const: const দিয়ে ডিক্লেয়ার করা ভ্যারিয়েবলটি অপরিবর্তনীয় (immutable), একবার মান সেট করার পর, আপনি এটি পরিবর্তন করতে পারবেন না।

    const name = "John";
    name = "Doe";  // Error: Assignment to constant variable
    

4. ব্লক লেভেল স্কোপ (Block-Level Scope) vs ফাংশন লেভেল স্কোপ (Function-Level Scope)

  • var: var শুধুমাত্র ফাংশন লেভেল স্কোপে কাজ করে, অর্থাৎ এটি যদি ফাংশনের বাইরে ডিক্লেয়ার করা হয়, তবে এটি গ্লোবাল স্কোপে চলে আসে। কিন্তু, যদি এটি কোনো ফাংশনের মধ্যে ডিক্লেয়ার করা হয়, তবে শুধুমাত্র ঐ ফাংশনের মধ্যে প্রযোজ্য থাকে।

    if (true) {
      var name = "John";  // গ্লোবাল স্কোপে চলে আসে
    }
    console.log(name);  // "John"
    
  • let এবং const: let এবং const ব্লক লেভেল স্কোপে থাকে। অর্থাৎ, এগুলি শুধুমাত্র সেই কোড ব্লকের মধ্যে প্রযোজ্য, যেখানে এগুলি ডিক্লেয়ার করা হয়েছে।

    if (true) {
      let name = "John";  // ব্লক স্কোপে
    }
    console.log(name);  // Error: name is not defined
    

5. গ্লোবাল স্কোপে ভ্যারিয়েবল (Global Scope)

  • var: var কিওয়ার্ড গ্লোবাল স্কোপে ডিক্লেয়ার করা হলে, এটি window অবজেক্টের অংশ হয়ে যায় (যদি ব্রাউজারে কোড চলে)।

    var name = "John";
    console.log(window.name);  // "John"
    
  • let এবং const: let এবং const গ্লোবাল স্কোপে ডিক্লেয়ার করা হলে, তারা window অবজেক্টের অংশ হয়ে যায় না, অর্থাৎ এগুলি গ্লোবাল স্কোপের অংশ হলেও window অবজেক্টে পৌঁছায় না।

    let name = "John";
    console.log(window.name);  // undefined
    

6. উপসংহার

var এবং let, const এর মধ্যে বেশ কিছু মৌলিক পার্থক্য রয়েছে:

  • var গ্লোবাল বা ফাংশন স্কোপড, তবে let এবং const ব্লক স্কোপড।
  • var হোইস্টিং সাপোর্ট করে এবং তার মান undefined থাকে, যখন let এবং const হোইস্টিং এর মাধ্যমে Temporal Dead Zone সৃষ্টি করে।
  • var দ্বারা ডিক্লেয়ার করা ভ্যারিয়েবলটি যে কোনো সময় পরিবর্তনযোগ্য (mutable), তবে const কনস্ট্যান্ট ভ্যারিয়েবল তৈরি করে যা পরিবর্তনযোগ্য নয়, আর let পরিবর্তনযোগ্য (mutable) ভ্যারিয়েবল তৈরি করে।

এগুলির সঠিক ব্যবহার আপনার কোডের নিরাপত্তা এবং কার্যকারিতা বাড়াতে সাহায্য করবে।

Content added By
Promotion

Are you sure to start over?

Loading...