1. 程式人生 > >let和const在es6中的異同點

let和const在es6中的異同點

http 而是 alt 技術 代碼 不存在 暫時 存在 把他

let和const這兩個都是聲明一個變量或函數的方法與var差不太多的效果

let的聲明在for循環中,當你定義的是多少,最後你的值就是多少開始的,它只進行一次循環,不會像var那樣去一遍一遍的去遍歷它

技術分享圖片

並且let在for循環中它只有在for裏面才能運行,在外部獲取的情況就會出錯

技術分享圖片

let的特殊情況,最好不要這樣定義,容易把自己玩進去,看下面的這段代碼,有兩個let,可以看成父子,當這樣定義的話,console的值就是它的最近的上一級,父子之間不會出現互相影響的情況

技術分享圖片

let的使用也不像var那樣使用那麽隨意,es6中明確的規定了如果在區塊中存在let和const命令,這個區塊對這些命令聲明的變量,從一開始形成了封閉作用域,凡是在聲明前使用這些變量,就會報錯俗稱“暫時性死區”。let特別大男子主義,誰在我前面用我的值就是不行,全給你們幹掉,叫你們用。(同區域內在let前使用它的值,全都會報錯)所以為了良好的編程習慣,大家都用把變量聲明完後在使用。出錯的話就要自己慢慢找bug了

技術分享圖片

let不能在同作用域內重復聲明這個值,並且不能在函數內部重新去聲明這個參數

技術分享圖片

const命令

const聲明一個只讀的常量,一旦聲明,這個常量就不能改變,只要改變就會出錯

技術分享圖片

coust命令也是在塊級作用域內有效

技術分享圖片

一樣常量不能提升,存在暫時性死區

技術分享圖片

一樣存在不能重復聲明

技術分享圖片

const保證的不是變量不能改動,而是指不能改變變量的指向,從下面的例子就能看出,變量值能夠隨意的改變,但是一旦把他的指向發生變化,那就報錯了。

技術分享圖片

如果定義完後不想讓他改變裏面的值的時候,這就需要把他的值給凍結一下才行,用下面的代碼

技術分享圖片

let和const有很多的相同點總結下

1.在塊級作用域下才能使用

2.常量不能提升,存在暫時性死區

3.一樣不能重復聲明

不同點:

1.const聲明出來的是只讀屬性,不能隨便改動,只能改變指向裏面的值,let聲明的值在同作用域下能夠進行改動

2.const不存在父子屬性,let能夠在父子屬性中存活

3.const不存在for循環著種操作

let和const在es6中的異同點