ES6Letভেরিয়েবলের সাথে পরিচয় হয় যা সামনে আসে block level scoping। যতক্ষণ না ES5আমাদের উপস্থিত ছিল block level scoping, সুতরাং যে ব্লকগুলির মধ্যে ঘোষিত ভেরিয়েবলগুলি সর্বদা hoistedস্তরের স্কোপিংয়ের কাজ করে।
মূলত Scopeআপনার প্রোগ্রামে কোথায় আপনার ভেরিয়েবলগুলি দৃশ্যমান তা নির্দেশ করে যা আপনাকে ঘোষিত ভেরিয়েবলগুলি কোথায় ব্যবহার করার অনুমতি দেয় তা নির্ধারণ করে। ইন ES5আছে global scope,function scope and try/catch scope, সঙ্গে ES6আমরা ব্লক স্তর scoping আসুন ব্যবহার করে পেতে।
- আপনি
varকীওয়ার্ডের সাথে কোনও ভেরিয়েবল সংজ্ঞায়িত করার সময় এটি নির্ধারিত মুহুর্ত থেকে পুরো ফাংশনটি জানতে পারে।
আপনি যখন letবিবৃতি সহ কোনও ভেরিয়েবল সংজ্ঞায়িত করেন তবে এটির সংজ্ঞাটি কেবলমাত্র ব্লকটিতেই তা জানা যায়।
function doSomething(arr){
//i is known here but undefined
//j is not known here
console.log(i);
console.log(j);
for(var i=0; i<arr.length; i++){
//i is known here
}
//i is known here
//j is not known here
console.log(i);
console.log(j);
for(let j=0; j<arr.length; j++){
//j is known here
}
//i is known here
//j is not known here
console.log(i);
console.log(j);
}
doSomething(["Thalaivar", "Vinoth", "Kabali", "Dinesh"]);
আপনি যদি কোডটি চালান, আপনি দেখতে পেলেন যে ভেরিয়েবলটি jকেবল loopআগে এবং পরে নয় কেবল পরিচিত । তবুও, আমাদের ভেরিয়েবলটি iপরিচিত হয়entire function পরে সংজ্ঞায়িত হওয়ার মুহুর্ত থেকেই এটি ।
লেট ব্যবহার করে আরও একটি দুর্দান্ত সুবিধা রয়েছে যেহেতু এটি একটি নতুন লেজিকাল পরিবেশ তৈরি করে এবং একটি পুরানো রেফারেন্স রাখার পরিবর্তে তাজা মানকে বাঁধে।
for(var i=1; i<6; i++){
setTimeout(function(){
console.log(i);
},1000)
}
for(let i=1; i<6; i++){
setTimeout(function(){
console.log(i);
},1000)
}
প্রথম forলুপ সর্বদা সর্বশেষ মানটি মুদ্রণ করে , letএটি একটি নতুন সুযোগ তৈরি করে এবং আমাদের মুদ্রণ করে নতুন মানগুলিকে আবদ্ধ করে 1, 2, 3, 4, 5।
আসার জন্য constants, এটি মূলত এর মতো কাজ করে let, কেবলমাত্র পার্থক্য হ'ল তাদের মান পরিবর্তন করা যায় না। ধ্রুবকগুলিতে রূপান্তর অনুমোদিত তবে পুনরায় নিয়োগের অনুমতি নেই।
const foo = {};
foo.bar = 42;
console.log(foo.bar); //works
const name = []
name.push("Vinoth");
console.log(name); //works
const age = 100;
age = 20; //Throws Uncaught TypeError: Assignment to constant variable.
console.log(age);
যদি একটি ধ্রুবক একটিকে বোঝায় তবে objectএটি সর্বদা উল্লেখ করে objectতবে objectনিজেই পরিবর্তন করা যায় (যদি এটি পরিবর্তনীয় হয়)। আপনি যদি অপরিবর্তনীয় objectথাকতে চান তবে আপনি এটি ব্যবহার করতে পারেনObject.freeze([])
let foo = () => bar; let bar = 'bar'; foo();চিত্রগুলি আরও কার্যকরভাবে উত্তোলন করা হয় , কারণ এটি অস্থায়ী মৃত অঞ্চলের কারণে স্পষ্ট নয়।