麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > JavaScript > 正文

ECMAScript6塊級作用域及新變量聲明(let)

2024-05-06 16:22:20
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了ECMAScript6塊級作用域及新變量聲明(let) 的相關資料,需要的朋友可以參考下

很多語言中都有塊級作用域,但JS沒有,它使用var聲明變量,以function來劃分作用域,大括號“{}” 卻限定不了var的作用域。用var聲明的變量具有變量提升(declaration hoisting)的效果。

ES6里增加了一個let,可以在{}, if, for里聲明。用法同var,但作用域限定在塊級,let聲明的變量不存在變量提升。

示例1: 塊級作用域 if

 

 
  1. function getVal(boo) { 
  2. if (boo) { 
  3. var val = 'red' 
  4. // ... 
  5. return val 
  6. else { 
  7. // 這里可以訪問 val 
  8. return null 
  9. // 這里也可以訪問 val 

變量val在if塊里聲明的,但在else塊和if外都可以訪問到val。

把var換成let,就變成這樣了

 

 
  1. function getVal(boo) { 
  2. if (boo) { 
  3. let val = 'red' 
  4. // ... 
  5. return val 
  6. else { 
  7. // 這里訪問不到 val 
  8. return null 
  9. // 這里也訪問不到 val 
  10. }  

示例2: 塊級作用域 for

 

 
  1. function func(arr) { 
  2. for (var i = 0; i < arr.length; i++) { 
  3. // i ... 
  4. // 這里也可以訪問到i 

變量i在for塊里聲明的,但在for外也能訪問到。

把var換成let,for外就訪問不了i

 

 
  1. function func(arr) { 
  2. for (let i = 0; i < arr.length; i++) { 
  3. // i ... 
  4. // 這里訪問不到i 

示例3: 變量提升(先使用后聲明)

 

 
  1. function func() { 
  2. // val先使用后聲明,不報錯 
  3. alert(val) // undefined 
  4. var val; 

變量val先使用后聲明,輸出undefined,也不報錯。

把var換成let,就報錯了

 

 
  1. function func() { 
  2. // val先使用后聲明,報語法錯 
  3. alert(val) 
  4. let val; 
  5. }  

示例4: 變量提升(先判斷后聲明)

 

 
  1. function func() { 
  2. if (typeof val == 'undefined') { 
  3. // ... 
  4. var val = '' 

使用typeof判斷時也可以再var語句的前面

但把var換成let,if處報語法錯

 

 
  1. function func() { 
  2. if (typeof val == 'undefined') { 
  3. // ... 
  4. let val = ''

ES6規定,如果代碼塊中存在let,這個區塊從一開始就形成了封閉作用域。凡是在聲明之前就使用,就會報錯。即在代碼塊內,在let聲明之前使用變量都是不可用的。語法上有個術語叫“暫時性死區”(temporal dead zone),簡稱TDZ。當然TDZ并沒有出現在ES規范里,它只是用來形象的描述。

let的注意事項

1. 不能重復聲明

 

 
  1. // var和let重復聲明 
  2. var name = 'Jack'
  3. let name = 'John'
  4.  
  5. // 兩個let重復聲明 
  6. let age = 24; 
  7. let age = 30; 

執行時報語法錯

2. 有了let后,匿名函數自執行就可以去掉了

 

 
  1. // 匿名函數寫法 
  2. (function () { 
  3. var jQuery = function() {}; 
  4. // ... 
  5. window.$ = jQuery 
  6. })(); 
  7.  
  8. // 塊級作用域寫法 
  9. let jQuery = function() {}; 
  10. // ... 
  11. window.$ = jQuery; 

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: av在线直播观看 | 羞羞视频免费网站入口 | 久草干| www.成人在线视频 | 一级毛片手机在线观看 | 久久久久久久久久久综合 | 可以看毛片的网址 | 色婷婷一区二区三区 | 黄色av一区二区三区 | 国产一区二区三区四区在线 | 史上最强炼体老祖动漫在线观看 | 激情视频免费看 | 九九热视频在线免费观看 | 自拍偷拍亚洲图片 | 黄网站在线观 | 日日操日日操 | 特级黄色一级毛片 | 国产99一区二区 | 一本色道久久综合狠狠躁篇适合什么人看 | 欧美jizzhd极品欧美 | 免费观看一级黄色片 | 久久91精品国产91久久yfo | 日产精品久久久一区二区福利 | 水多视频在线观看 | 黄色片网站免费观看 | 成人午夜免费看 | www久久综合| 亚洲电影免费观看国语版 | 男人午夜小视频 | 看免费5xxaaa毛片 | 国产成人av免费观看 | 欧美 国产 亚洲 卡通 综合 | 日韩av电影免费看 | 午夜激情视频免费 | 另类亚洲孕妇分娩网址 | 亚洲射情 | 少妇的肉体的满足毛片 | 日韩一级网站 | 日本欧美一区二区三区视频麻豆 | 国产一区二区三区视频观看 | 亚洲国产一区二区三区 |