您好,登錄后才能下訂單哦!
這篇文章主要講解了“JavaScript ES新特性塊級作用域怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JavaScript ES新特性塊級作用域怎么使用”吧!
所謂的塊級作用域,就是該變量只能在聲明時的代碼塊或者子代碼塊中使用。在ECMAScript 2015
以前的版本中是不存在塊級作用域的,而ECMAScript 2015
提供的let關鍵字,使JavaScript
出現了塊級作用域,示例代碼如下所示
/* * 塊級作用域只能使用 let 關鍵字 * let關鍵字不僅可以聲明塊級作用域, 還可以用在全局作用域和函數作用域 */ // 全局作用域 let a = 100; // 全局變量 (function () { // 函數作用域 let b = 200; // 局部變量 })() if (true) { // 塊級作用域 let c = 300; // 局部變量 } console.log(a); // 100 console.log(b); // 拋出異常 console.log(c); // 拋出異常
ECMAScript 5
只存在全局作用域和函數作用域,沒有塊級作用域。這種情況出現一些問題:
局部變量可能會覆蓋全局變量
var v = 100; (function(){ console.log(v); // undefined var v = 200; })
在循環體中用于計數的變量泄露為全局變量
// 定義一個循環體 for (var v = 0; v < 10; v++) { console.log("這是一個 for 循環"); // 這是一個 for 循環 * 10 } console.log(v); // 10
在循環完畢之后如果不手動釋放此變量,其生命周期跟隨此腳本生存,占用內存。
ECMAScript5
標準規定函數的聲明只能在全局作用域和函數作用域中,不能再塊級作用域中聲明。
情況一:
if (true) { function f() {} }
情況二:
try { function f() {} } catch(e) { // ... }
上面兩種函數聲明,根據ECMAScript5
的規定都是非法的。
而 ECMAScript 2015
標準規定在塊級作用域聲明函數類似于使用了var
關鍵字,即在當前塊級作用域外無法訪問。
{ function fun() { console.log('this is fun'); } } fun(); // this is fun // 上面的等同于下面的函數 { var fn = function () { console.log('this is fn'); } } fn(); // this is fn // 如果使用 let 關鍵字 則在塊級作用域外無法訪問 { let f = function () { console.log('this is f'); } } f(); // 拋出異常 描述信息為 ReferenceError: f is not defined
感謝各位的閱讀,以上就是“JavaScript ES新特性塊級作用域怎么使用”的內容了,經過本文的學習后,相信大家對JavaScript ES新特性塊級作用域怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。