我寫的es6代碼如下

但是瀏覽器編譯出來代碼如下

我定義的let為什么編譯出來全部變成了var???而且運行出來結果為3 這也不是我想要的結果 新手接觸es6 求大神解釋一下
uj5u.com熱心網友回復:
首先給你回答一下為什么編譯之后都變成了var,因為let、const本身就是es6新增的內容,所以編譯之后只能是變成var;let和var的區別就是let不會存在變數提升;再來說一下你的代碼,let和var的另外一個區別就是let宣告的變數不可以重復宣告,否則會報錯,至于你的為什么沒有報錯,是因為你把兩個引數放到了兩個物件中,相當于兩個獨立的作用域,所以let根本沒有等于3的可能性;除了這個,為什么宣告變數要放到物件里邊呢,再者,es6不需要編譯也能運行在瀏覽器,為什么要編譯呢?繼續說你的輸出結果,你上邊你的輸出結果很明顯是輸出1怎么可能是3;兩個獨立的作用域,從何而來的3?另外說一點,既然你在學es6,那么建議你不需要用到this或者建構式的時候將function可以換成箭頭函式uj5u.com熱心網友回復:
你要設定為嚴格模式"use strict";或者用函式運算式創建函式
let fun = function (y=x) {
}
否則的話用function陳述句式函式宣告會復制一份同名函式到塊作用域之外。
這樣在編譯成ES5時可能就會出現與預期不符合的情況。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/56040.html
標籤:其他
