47 views

জাভাস্ক্রিপ্ট – var, let, const

ES6 পড়ুন (এটি ECMAScript 2015 নামেও পরিচিত) জাভাস্ক্রিপ্টের সিনট্যাক্সের চেয়ে বড় পরিবর্তন হয়েছে এবং জেএসে নতুন বৈশিষ্ট্য নিয়ে আঁচছে যা এর আগে ছিল না…

ES6 শিখতে গুরুত্বপূর্ণ কারণ এর একটি কারণ হ’ল এটি জাভাস্ক্রিপ্টকে আরও ভাল লেখা এবং সহজ করে তোলে এবং একই সাথে আজকের আধুনিক ওয়েব প্রযুক্তির সাথে রিঅ্যাক্ট, নোড.জেস এবং আরও অনেকগুলি ব্যবহার করা হচ্ছে ।

এই পোস্টে, আপনি নতুন কীওয়ার্ড শিখতে পারবেন যা ES6  ভ্যারিয়েবল ডিক্লারেশন্স  জন্য নিয়ে আঁচছে: letএবং const। তবে প্রথমে, আসুন কী কী ভুল ছিল তা ব্যাখ্যা করি var

var সমস্যা কি ছিল?

varভেরিয়েবল ঘোষণার জন্য আমাদের কাছে ইতিমধ্যে জেএসে কীওয়ার্ড ছিল । তাহলে কেন ES6 অতিরিক্ত কীওয়ার্ড চালু করেছে?

সমস্যাটি বোঝার জন্য varপ্রথমে আপনাকে বুঝতে হবে যে scope কী।

Scope determines the accessibility of variables, objects, and functions from different parts of the code. — w3schools

জাভাস্ক্রিপ্টে 3 ধরণের স্কোপ (Scope) রয়েছে:

  • ফাংশন (লোকাল ) সুযোগ
  • গ্লোবাল স্কোপ (Scope)
  • ব্লক স্কোপ (Scope) (ইএস 6 সহ নতুন)

var supports function & global scope, but not block scope.

ফাংশন ( লোকাল ) স্কোপ

যখন কোনও ফাংশনের অভ্যন্তরে কোনও ভেরিয়েবল সংজ্ঞায়িত করা হয় , এটি কেবলমাত্র সেই ফাংশনের জন্য লোকাল হবে এবং বাইরে ব্যবহার করা যাবে না:

function local() {
  var number = 1;
   console.log(number); // 1 gets printed
}
console.log(number); // undefined

গ্লোবাল স্কোপ

যখন কোনও ফাংশনের বাইরে কোনও ভেরিয়েবল ঘোষণা করা হয় বা varকীওয়ার্ড ছাড়াই তখন তা গ্লোবাল হয়ে যাবে এবং যে কোনও জায়গা থেকে অ্যাক্সেসযোগ্য হবে:

var number = 1;

function local() {  
  console.log(number); // 1 gets printed
}

console.log(number); // 1 gets printed

ব্লক স্কোপ

curly braces { }, if-else cases এবং for loops হয় block-scoped

আসুন লুপের ভিতরে একটি ভেরিয়েবল (সহ var) সংজ্ঞায়িত করি এবং দেখুন কী প্রিন্ট হয়…

for(var i = 1; i < 10; i++) {
 console.log(i);
} 
console.log(i);    // What do we expect here?

এখানে সবকিছু ঠিক আছে মনে হচ্ছে। তবে দ্বিতীয় কনসোল.লগের কী হবে?

দ্বিতীয় console.log বাইরে জন্য লুপ এবং  লোকাল ভ্যারিয়েবল
“i” যেহেতু প্রিন্ট হওয়ার কথা ছিল undefined ।

তবে, যদি আমরা  let or const,  ব্যবহার করি, যেহেতু সেগুলি ব্লক-স্কোপড , এই সমস্যাটি সমাধান হবে।

রেডিক্লারেশন ইসু অফ var

এর সাথে আর একটি সমস্যা varহ’ল এটি একই পরিবর্তনশীলগুলিকে বারবার পুনরায় ডিক্লেয়ার করার অনুমতি দেয় :

var number = 1;   // first declaration
var number = 2;   // same variable redeclared with the same name

console.log(number); // And we see no errors

এখন আসুন দেখুন ES6 কীভাবে তাদের সাথে ডিল করে …

var এর পরিবর্তে let

আমি উপরে উল্লিখিত সমস্যাগুলি প্রতিরোধ করতে আসুন এর সাথে আবার চেষ্টা করুন let:

for(let i = 0; i < 10; i++) {   // same local variable with let 
  console.log(i);
}

console.log(i); // This time what do we expect?

তাই let ব্লক-স্কোপ ও দ্বিতীয় console.log প্রিন্ট করছে undefined । পারফেক্ট!

এছাড়াও, একটি ভেরিয়েবলের সাথে একটি ভেরিয়েবল পুনরায় ঘোষণার চেষ্টা করে letএকটি ত্রুটি প্রদান করে:

সুতরাং letকীওয়ার্ড:

  • can be used instead of var
  • is block-scoped
  • doesn’t allow redeclaration, but can be reassigned later

const

অন্য নতুন কীওয়ার্ড যা ES6 এনেছে তা হ’ল const

letএবং এর মধ্যে পার্থক্য constহ’ল একবার আমরা এর সাথে একটি ভেরিয়েবল ঘোষণা করি const, পরে এটি পরিবর্তন করা যায় না:

মূল constশব্দটি:

Leave a Reply