JavaScript?ES新特性塊級作用域
前言:
在學(xué)習(xí)塊級作用域之前需要我們對作用域有個(gè)了解,所謂的作用域就是代碼當(dāng)中的某個(gè)成員起作用的范圍。
1.塊級作用域是什么
所謂的塊級作用域,就是該變量只能在聲明時(shí)的代碼塊或者子代碼塊中使用。在ECMAScript 2015以前的版本中是不存在塊級作用域的,而ECMAScript 2015提供的let關(guān)鍵字,使JavaScript出現(xiàn)了塊級作用域,示例代碼如下所示
/*
* 塊級作用域只能使用 let 關(guān)鍵字
* let關(guān)鍵字不僅可以聲明塊級作用域, 還可以用在全局作用域和函數(shù)作用域
*/
// 全局作用域
let a = 100; // 全局變量
(function () {
// 函數(shù)作用域
let b = 200; // 局部變量
})()
if (true) {
// 塊級作用域
let c = 300; // 局部變量
}
console.log(a); // 100
console.log(b); // 拋出異常
console.log(c); // 拋出異常
2.為什么需要塊級作用域
ECMAScript 5只存在全局作用域和函數(shù)作用域,沒有塊級作用域。這種情況出現(xiàn)一些問題:
局部變量可能會覆蓋全局變量
var v = 100;
(function(){
console.log(v); // undefined
var v = 200;
})
在循環(huán)體中用于計(jì)數(shù)的變量泄露為全局變量
// 定義一個(gè)循環(huán)體
for (var v = 0; v < 10; v++) {
console.log("這是一個(gè) for 循環(huán)"); // 這是一個(gè) for 循環(huán) * 10
}
console.log(v); // 10
在循環(huán)完畢之后如果不手動(dòng)釋放此變量,其生命周期跟隨此腳本生存,占用內(nèi)存。
3.與函數(shù)聲明
ECMAScript5標(biāo)準(zhǔn)規(guī)定函數(shù)的聲明只能在全局作用域和函數(shù)作用域中,不能再塊級作用域中聲明。
情況一:
if (true) {
function f() {}
}
情況二:
try {
function f() {}
} catch(e) {
// ...
}
上面兩種函數(shù)聲明,根據(jù)ECMAScript5的規(guī)定都是非法的。
而 ECMAScript 2015標(biāo)準(zhǔn)規(guī)定在塊級作用域聲明函數(shù)類似于使用了var關(guān)鍵字,即在當(dāng)前塊級作用域外無法訪問。
{
function fun() {
console.log('this is fun');
}
}
fun(); // this is fun
// 上面的等同于下面的函數(shù)
{
var fn = function () {
console.log('this is fn');
}
}
fn(); // this is fn
// 如果使用 let 關(guān)鍵字 則在塊級作用域外無法訪問
{
let f = function () {
console.log('this is f');
}
}
f(); // 拋出異常 描述信息為 ReferenceError: f is not defined
到此這篇關(guān)于JavaScript ES新特性塊級作用域的文章就介紹到這了,更多相關(guān)ES新特性塊級作用域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
腳本整合指定文件/文件夾執(zhí)行定制化ESLint命令使用實(shí)例
這篇文章主要為大家介紹了腳本整合指定文件/文件夾執(zhí)行定制化?ESLint命令使用實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
微信公眾號 提示:Unauthorized API function 問題解決方法
這篇文章主要介紹了微信公眾號 提示:Unauthorized API function 問題解決方法的相關(guān)資料,這里提供了出現(xiàn)提示的解決方法,需要的朋友可以參考下2016-12-12
JavaScript前端實(shí)用的工具函數(shù)封裝
這篇文章主要為大家介紹了JavaScript前端實(shí)用的一些工具函數(shù)的封裝,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07

