ES6系列之變數宣告

2021-10-07 16:03:01 字數 2512 閱讀 4727

在之前的js版本中,宣告變數一直都是用var, 這個估計大家都很熟悉了。

那麼它的作用呢就是用來宣告乙個變數,比如像這樣子:

var a =

10

在這裡我們就用var宣告了乙個變數a 並且在宣告的同時給這個變數a賦值了 也就是10;

那麼這時候如果我們去引用這個變數,那麼得到的結果就是10,這沒什麼稀奇的,在這裡就不再贅述了。

那麼在es6裡面新增了兩個宣告變數的方法:

乙個是let,用於宣告變數。

乙個是const,用於宣告常量。

我們來看一下這三者之間的區別:

這兩個關鍵字都是用於宣告變數的,在這種情況(先宣告後使用)下使用let和var的時候其實是沒有區別的。

區別一:變數提公升

用var宣告的變數會被提公升,而用let宣告的變數不會被提公升。

不過呢,我們都知道var關鍵字宣告變數的時候有乙個東西,叫「變數提公升」;

也就是將變數宣告提公升到它所在作用域的最開始的部分,比如:

如果在宣告這個變數之前去引用這個變數,如果這個變數是用var進行宣告的,那麼得到的結果其實是undefined。

也就是為定義的意思,但是這個變數是存在的。

我們知道js在執行之前其實有乙個與解析的過程,所以上面**在js去進行解析的時候,其實變成了這樣:

可以看到變數a的宣告跑到console.log的前面去了,只是賦值還是在console.log之後進行賦值的。

console.log得到的結果就是undefined. 這就是所謂的變數提公升了。

這時候區別就來了:用var宣告的變數會被提公升,而用let宣告的變數不會被提公升。

也就是說:

在宣告之前去引用let宣告的變數會直接報錯,會直接阻斷程式的執行。

區別二:重複宣告

用var可以重複宣告同乙個變數,而let不可以。

我們知道,用var宣告乙個變數之後,其實還可以再次用var去宣告這個變數,不過是後者覆蓋前者,並沒有太大意義。

不過至少不會報錯,而如果用let去宣告變數的話,就得稍微注意一點,因為let不可以在同乙個作用域下重複宣告同乙個變數:

如果用let重複宣告同乙個變數,那麼這時候就會報錯:變數b已經被宣告了。

區別三:塊級作用域

用let宣告的變數支援塊級作用域

es6新提出來了乙個塊級作用域的概念,在之前,作用域只存在函式裡面,或者全域性。

而es6提出的塊級作用域則是乙個大括號就是乙個塊級作用域,也就是說if語句裡面都存在作用域概念了,比如:

const的特性

和let一樣,const也是es6新增的關鍵字,let用於宣告變數,而const用於宣告常量。

當然,const和let也有一些相同點:

然後我們再來說一下這兩個傢伙的不同點:

區別一:const宣告的常量不能被修改

正常來說,我們不管是用var宣告的變數,還是用let宣告的變數,後期都是可以對這個變數再次賦值的,也就是說可以修改。

而常量一旦定義了,後期就不能修改了。

如:一旦你嘗試著去修改乙個常量的時候,瀏覽器就會告訴你,常量不可以被修改!

不過有乙個方法是可以做到修改常量的,就是宣告常量的時候,給常量賦值乙個物件。

然後後期再去修改這個物件裡面的值就可以了,不過這麼做沒有任何的意義。

常量存在的意義就在於其不可更改性。

所以這個方法也就不再多說了

區別二:常量在宣告的時候,必須賦值

其實這一點特別好理解,常量在後期沒有辦法再次進行賦值,所以只能在宣告的時候進行賦值。

另外有一點要特別關注一下,比如:

所以在let變數宣告之前,對tmp的賦值會報錯。

es6中明確規定,如果區塊中存在let和const命令,這個區塊對這些命令宣告的變數。

從一開始就形成了封閉作用域,凡是在宣告之前就使用這些變數就會報錯。

那麼以上就是關於es6在變數宣告這一塊的小改動啦!

Es6之變數宣告

es6變數宣告let 和 canst,let 所宣告的變數具有塊級作用域,且宣告的變數不會前置,而const宣告的是不變了常量 let test test let 所宣告的變數只在塊級作用域內有效,而var就不同 for var i 1 i 5 i console.log str 輸出hello.c...

ES6 變數宣告方式

var,function,let,const,import,class1.let只在所在的 塊中有效 2.以前我們需要用iife解決的問題 3.不存在變數宣告提公升 4.暫時性死區tdz 1.let只在所在的 塊中有效 2.以前我們需要用iife解決的問題 3.不存在變數宣告提公升 console....

ES6之變數與解構賦值

變數宣告var 函式作用域 可以重新賦值,重新定義 let 塊級作用域 不能重新宣告,可以修改 const 塊級作用域 不能重新宣告,不能修改 常量 var 是全域性變數,for var i 0 i 10 i for let i 0 i 10 i 1000 script 變數提公升var命令會發生 ...