JavaScript?ES新特性塊級作用域
前言:
在學(xué)習(xí)塊級作用域之前需要我們對作用域有個了解,所謂的作用域就是代碼當(dāng)中的某個成員起作用的范圍。
1.塊級作用域是什么
所謂的塊級作用域,就是該變量只能在聲明時的代碼塊或者子代碼塊中使用。在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)體中用于計數(shù)的變量泄露為全局變量
// 定義一個循環(huán)體 for (var v = 0; v < 10; v++) { console.log("這是一個 for 循環(huán)"); // 這是一個 for 循環(huán) * 10 } console.log(v); // 10
在循環(huán)完畢之后如果不手動釋放此變量,其生命周期跟隨此腳本生存,占用內(nèi)存。
3.與函數(shù)聲明
ECMAScript5
標準規(guī)定函數(shù)的聲明只能在全局作用域和函數(shù)作用域中,不能再塊級作用域中聲明。
情況一:
if (true) { function f() {} }
情況二:
try { function f() {} } catch(e) { // ... }
上面兩種函數(shù)聲明,根據(jù)ECMAScript5
的規(guī)定都是非法的。
而 ECMAScript 2015
標準規(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)文章
利用 JavaScript 構(gòu)建命令行應(yīng)用
這篇文章主要介紹了利用 JavaScript 構(gòu)建命令行應(yīng)用,下面文章圍繞如何利用JavaScript 構(gòu)建命令行應(yīng)用的相關(guān)資料炸開詳細內(nèi)容,需要的朋友可以參考一下2021-11-11javascript使用btoa和atob來進行Base64轉(zhuǎn)碼和解碼
javascript原生的api本來就支持,Base64,但是由于之前的javascript局限性,導(dǎo)致Base64基本中看不中用。當(dāng)前html5標準正式化之際,Base64將有較大的轉(zhuǎn)型空間,對于Html5 Api中出現(xiàn)的如FileReader Api, 拖拽上傳,甚至是Canvas,Video截圖都可以實現(xiàn)2017-03-03JavaScript?Canvas實現(xiàn)噪點濾鏡回憶童年電視雪花屏
這篇文章主要為大家介紹了JavaScript?Canvas實現(xiàn)噪點濾鏡回憶童年電視雪花屏,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09