日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ECMAScript 6 -- let和const命令

發布時間:2023/12/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ECMAScript 6 -- let和const命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ES6新增了let命令,用來聲明變量。它的用法類似于var,但是所聲明的變量,只在let命令所在的代碼塊內有效。

for (let i = 0; i < 10; i++) {console.log(i);}

可以執行

for (let i = 0; i < 10; i++) {}console.log(i);

就會報錯

ncaught ReferenceError: i is not definedat <anonymous>:3:13at Object.InjectedScript._evaluateOn (<anonymous>:145:167)at Object.InjectedScript._evaluateAndWrap (<anonymous>:137:25)at Object.InjectedScript.evaluate (<anonymous>:118:14)

let var使用區別:

var:

var a = []; for (var i = 0; i < 10; i++) {a[i] = function () {console.log(i);}; } a[6]();

結果:

10

變量i是var聲明的,在全局范圍內都有效,所以全局只有一個變量i。每一次循環,變量i的值都會發生改變,而循環內被賦給數組a的function在運行時,會通過閉包讀到這同一個變量i,導致最后輸出的是最后一輪的i的值,也就是10。

let:

var a = []; for (let i = 0; i < 10; i++) {a[i] = function () {console.log(i);}; } a[6]();

結果:

6

變量i是let聲明的,當前的i只在本輪循環有效,所以每一次循環的i其實都是一個新的變量,所以最后輸出的是6。

?

for循環還有一個特別之處,就是循環語句部分是一個父作用域,而循環體內部是一個單獨的子作用域。

不存在變量升級:

// var 的情況 console.log(foo); // 輸出undefined var foo = 2;// let 的情況 console.log(bar); // 報錯ReferenceError let bar = 2; VM171:2 undefined

報錯:

VM171:6 Uncaught ReferenceError: bar is not definedat <anonymous>:6:13at Object.InjectedScript._evaluateOn (<anonymous>:145:167)at Object.InjectedScript._evaluateAndWrap (<anonymous>:137:25)at Object.InjectedScript.evaluate (<anonymous>:118:14)(anonymous function) @ VM171:6InjectedScript._evaluateOn @ VM68:145InjectedScript._evaluateAndWrap @ VM68:137InjectedScript.evaluate @ VM68:118

?

總結

以上是生活随笔為你收集整理的ECMAScript 6 -- let和const命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。