কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে ভেরিয়েবল ডিক্লেয়ার করা এবং ইনিশিয়ালাইজ করার পার্থক্য কী?


ECMAScript স্পেসিফিকেশন অনুযায়ী

একটি var স্টেটমেন্ট রানিং এক্সিকিউশন কনটেক্সটের VariableEnvironment-এ স্কোপড ভেরিয়েবল ডিক্লেয়ার করে। 
Var ভেরিয়েবলগুলো তাদের সংরক্ষক লেক্সিক্যাল এনভায়রনমেন্ট ইনস্ট্যানশিয়েট হওয়ার সাথে সাথে তৈরি হয় 
এবং তৈরি হওয়ার সাথে সাথে undefined-এ ইনিশিয়ালাইজ হয়। [...] 
একটি Initializer সহ VariableDeclaration দ্বারা সংজ্ঞায়িত একটি ভেরিয়েবল, তার Initializer-এর 
AssignmentExpression-এর মান দিয়ে অ্যাসাইন হয় যখন VariableDeclaration এক্সিকিউট হয়, 
না যে যখন ভেরিয়েবল তৈরি হয়।

মূল পার্থক্য

  • সকল ভেরিয়েবল undefined মান দিয়ে ইনিশিয়ালাইজ হয়।
  • ভেরিয়েবল ডিক্লেয়ারেশন তাদের লেক্সিক্যাল এনভায়রনমেন্ট ইনিশিয়ালাইজেশনের সাথে সাথে undefined-এ ইনিশিয়ালাইজ হয়।
  • এই ইনিশিয়ালাইজেশন অ্যাসাইনমেন্টের মত কাজ করে না।

দৃশ্যমান উদাহরণ

console.log(x); // undefined (এরর নয়)
var x = 5;

console.log(y); // ReferenceError (TDZ)
let y = 10;

// ডিক্লেয়ারেশন vs ইনিশিয়ালাইজেশন
var a;        // ডিক্লেয়ারেশন + ইনিশিয়ালাইজেশন (undefined)
var b = 10;   // ডিক্লেয়ারেশন + ইনিশিয়ালাইজেশন (10)
b = 20;       // শুধু অ্যাসাইনমেন্ট

হোইস্টিং প্রেক্ষাপটে

// এটি কীভাবে ইন্টারপ্রেট হয়:
var a;
console.log(a); // undefined
a = 5;          // অ্যাসাইনমেন্ট (হোইস্ট হয় না)
  1. জাভাস্ক্রিপ্টে ফাংশন ও মেথডের পার্থক্য

  2. জাভাস্ক্রিপ্ট এবং পাইথনে সেমিকোলনের পার্থক্য

  3. পাইথনে গ্লোবাল এবং লোকাল ভেরিয়েবলের পার্থক্য

  4. জাভা এবং জাভাস্ক্রিপ্টের মধ্যে পার্থক্য কী?