ES6
Let
ভেরিয়েবলের সাথে পরিচয় হয় যা সামনে আসে 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();
চিত্রগুলি আরও কার্যকরভাবে উত্তোলন করা হয় , কারণ এটি অস্থায়ী মৃত অঞ্চলের কারণে স্পষ্ট নয়।