JavaScript Let
- পূর্ববর্তী পৃষ্ঠা JS ভেরিয়েবল
- পরবর্তী পৃষ্ঠা JS Const
ECMAScript 2015
ES2015-এর মাধ্যমে দুটি গুরুত্বপূর্ণ JavaScript নতুন কীওয়ার্ড উপস্থাপিত হয়েছে:let
和 const
.
এই দুটি কীওয়ার্ডটি JavaScript-এ ব্লক স্কোপকে প্রদান করেBlock Scope)বিন্যাসটি(এবং নিয়ামক)
ES2015-এর আগে, JavaScript-এ কেবল দুইটি ধরনের স্কোপ ছিল:全局作用域和函数作用域.
全局作用域
সার্বজনীন(ফাংশনের বাইরে)ঘোষিত বিন্যাসটি মালিকানা করে全局作用域.
ইনস্ট্যান্স
var carName = "porsche"; // এখানের কোডটিও carName-এর ব্যবহার করা যায় function myFunction() { // এখানের কোডটিও carName-এর ব্যবহার করা যায় }
সার্বজনীনবিন্যাসটি JavaScript প্রোগ্রামের যে কোন স্থানে পরিবেশন করা যায়
函数作用域
স্থানীয়(ফাংশনের মধ্যে)ঘোষিত বিন্যাসটি মালিকানা করে函数作用域.
ইনস্ট্যান্স
// এখানের কোডটি carName-এর ব্যবহার করা যায় না function myFunction() { var carName = "porsche"; // code here CAN use carName } // এখানের কোডটি carName-এর ব্যবহার করা যায় না
স্থানীয়বিন্যাসটি শুধুমাত্র ঘোষিত হওয়া ফাংশনের মধ্যেই পরিবেশন করা যায়
JavaScript ব্লক স্কোপ
দ্বারা var
কীওয়ার্ড ঘোষিত বিন্যাসটি ব্লক স্কোপকে নেইস্কোপ.
ব্লক {} ব্লকের মধ্যে ঘোষিত বিন্যাসটি ব্লকের বাইরেও পরিবেশন করা যায়
ইনস্ট্যান্স
{ var x = 10; } // এখানে x-এর ব্যবহার করা যায়
ES2015-এর আগে, JavaScript-এ ব্লক স্কোপ ছিল না
ব্যবহার করা যেতে পারে let
কীওয়ার্ড ঘোষিত বিন্যাসটি ব্লক স্কোপের বিন্যাসটি মালিকানা করে
ব্লক {} ব্লকের মধ্যে ঘোষিত বিন্যাসটি ব্লকের বাইরে পরিবেশন করা যায় না:
ইনস্ট্যান্স
{ let x = 10; } // এখানে x-এর ব্যবহার করা যায় না
পুনরায় ঘোষিত বিন্যাস
ব্যবহার করুন var
কীওয়ার্ড পুনরায় ঘোষিত বিন্যাসটি সমস্যা সৃষ্টি করতে পারে
ব্লকের মধ্যে পুনরায় ঘোষিত বিন্যাসটি ব্লকের বাইরের বিন্যাসটিকেও পুনরায় ঘোষিত করবে:
ইনস্ট্যান্স
var x = 10; // এখানে x 10 { var x = 6; // এখানে x 6 } // এখানে x 6
ব্যবহার করুন let
কীওয়ার্ড পুনরায় ঘোষিত বিন্যাসটি এই সমস্যা সমাধান করতে পারে
ব্লকের মধ্যে পুনরায় ঘোষিত বিন্যাসটি ব্লকের বাইরের বিন্যাসটিকে পুনরায় ঘোষিত করে না:
ইনস্ট্যান্স
var x = 10; // এখানে x 10 { let x = 6; // এখানে x 6 } // এখানে x 10
ব্রাউজার সমর্থন
Internet Explorer 11 বা তার আগের সংস্করণগুলি সম্পূর্ণভাবে সমর্থন করে না let
কীওয়ার্ড
এই টেবিলটি প্রথমবারের মতো সম্পূর্ণরূপে সমর্থন করে let
কীওয়ার্ডের ব্রাউজার সংস্করণ:
Chrome 49 | আইই / এজ ১২ | ফায়ারফক্স ৪৪ | স্যাফারি ১১ | অপেরা ৩৬ |
2016 সাল ৩ মাস | 2015 সাল ৭ মাস | 2015 সাল ১ মাস | 2017 সাল ৯ মাস | 2016 সাল ৩ মাস |
循环作用域
在循环中使用 var
:
ইনস্ট্যান্স
var i = 7; for (var i = 0; i < 10; i++) { // 一些语句 } // 此处,i 为 10
在循环中使用 let
:
ইনস্ট্যান্স
let i = 7; for (let i = 0; i < 10; i++) { // 一些语句 } // 此处 i 为 7
在第一个例子中,在循环中使用的变量使用 var
重新声明了循环之外的变量。
在第二个例子中,在循环中使用的变量使用 let
并没有重新声明循环外的变量。
如果在循环中用 let
声明了变量 i,那么只有在循环内,变量 i 才是可见的。
函数作用域
在函数内声明变量时,使用 var
和 let
很相似。
它们都有函数作用域:
function myFunction() { var carName = "porsche"; // 函数作用域 } function myFunction() { let carName = "porsche"; // 函数作用域 }
全局作用域
如果在块外声明声明,那么 var
和 let
也很相似。
它们都拥有全局作用域:
var x = 10; // 全局作用域 let y = 6; // 全局作用域
HTML 中的全局变量
使用 JavaScript 的情况下,全局作用域是 JavaScript 环境。
在 HTML 中,全局作用域是 window 对象。
দ্বারা var
关键词定义的全局变量属于 window 对象:
ইনস্ট্যান্স
var carName = "porsche"; // 此处的代码可使用 window.carName
দ্বারা let
关键词定义的全局变量不属于 window 对象:
ইনস্ট্যান্স
let carName = "porsche"; // 此处的代码不可使用 window.carName
重新声明
允许在程序的任何位置使用 var
重新声明 JavaScript 变量:
ইনস্ট্যান্স
var x = 10; // 现在,x 为 10 var x = 6; // 现在,x 为 6
একই অবস্থানে, বা একই ব্লকে, দ্বারা let
পুনরায় প্রকাশ করা var
ভেরিয়েবলটি অনুমতি নয়:
ইনস্ট্যান্স
var x = 10; // অনুমত let x = 6; // নিষিদ্ধ { var x = 10; // অনুমত let x = 6; // নিষিদ্ধ }
একই অবস্থানে, বা একই ব্লকে, দ্বারা let
পুনরায় প্রকাশ করা let
ভেরিয়েবলটি অনুমতি নয়:
ইনস্ট্যান্স
let x = 10; // অনুমতি let x = 6; // নিষিদ্ধ { let x = 10; // অনুমতি let x = 6; // নিষিদ্ধ }
একই অবস্থানে, বা একই ব্লকে, দ্বারা var
পুনরায় প্রকাশ করা let
ভেরিয়েবলটি অনুমতি নয়:
ইনস্ট্যান্স
let x = 10; // অনুমতি var x = 6; // অনুমতি নয় { let x = 10; // অনুমতি var x = 6; // অনুমতি নয় }
ভিন্ন অবস্থান বা ব্লকের মধ্যে, দ্বারা let
ভেরিয়েবল পুনরায় প্রকাশ করা অনুমতি পায়:
ইনস্ট্যান্স
let x = 6; // অনুমতি { let x = 7; // অনুমতি } { let x = 8; // অনুমতি }
উন্নীত
দ্বারা var
প্রকাশিত ভেরিয়েবলটিউন্নীতউন্নীত (Hoisting) কি না বুঝেন, আমাদের Hoisting চপ্তকে পড়ুন。
ভেরিয়েবল প্রকাশ পর্যন্ত ব্যবহার করতে পারেন:
ইনস্ট্যান্স
// এখানে, আপনি carName ব্যবহার করতে পারবেন var carName;
দ্বারা let
প্রকাশিত ভেরিয়েবলটি শীর্ষে উন্নীত হবে না。
প্রকাশ let
ভেরিয়েবল পূর্বে ব্যবহার করা হলে ReferenceError হবে。
ভেরিয়েবল ব্লকের শুরু থেকে 'অস্থায়ী মৃত্যু' অবস্থায় থাকে, প্রকাশ পর্যন্ত:
ইনস্ট্যান্স
// এখানে, আপনি carName ব্যবহার করতে পারবেন না let carName;
- পূর্ববর্তী পৃষ্ঠা JS ভেরিয়েবল
- পরবর্তী পৃষ্ঠা JS Const