更新時(shí)間:2022年07月27日16時(shí)46分 來源:傳智教育 瀏覽次數(shù):
const是ES6中新增的用于聲明常量的關(guān)鍵字。所謂常量就是值(內(nèi)存地址)不能變化的量。const關(guān)鍵字聲明的常量具有塊級作用域,聲明常量時(shí)必須賦值,聲明常量并賦值后常量的值不能修改。
1.const關(guān)鍵字聲明的常量具有塊級作用域
演示const關(guān)鍵字聲明的常量塊級作用域效果,具體代碼如下:
<script> if (true) { const a = 10; wconsole.log(a); //輸出結(jié)果:10 } console.log(a); //報(bào)錯,a未定義 </script>
2.const關(guān)鍵字聲明常量時(shí)必須賦值
演示const關(guān)鍵字聲明常量時(shí)不賦值的情況
<script> const PI;//報(bào)錯,常量PI未賦值 </script>
3.const關(guān)鍵字聲明常量并賦值后常量的值不能修改
(1)對于基本數(shù)據(jù)類型(如數(shù)值、字符串),一旦賦值,值就不可修改。
<script> const PI = 3.14; PI=100;/∥報(bào)錯,無法對常量賦值 </script>
(2)對于復(fù)雜數(shù)據(jù)類型(如數(shù)組、對象),雖然不能重新賦值,但是可以更改內(nèi)部的值。
<script> const ary =[100, 200]; ary[0] = 'a'; ary[1] = 'b'; console.log(ary);∥可以更改數(shù)組內(nèi)部的值,結(jié)果為['a','b'] ary=['a','b'];∥報(bào)錯,無法對常量賦值 </script>
變量的作用域范圍不同
使用var關(guān)鍵字聲明的變量,其作用域?yàn)樵撜Z句所在的函數(shù)內(nèi),且存在變量提升現(xiàn)象。使用let關(guān)鍵字聲明的變量和使用const關(guān)鍵字聲明的常量都具有塊級作用域。
變量提升
使用var關(guān)鍵字聲明的變量存在變量提升,可以先使用再聲明。使用let關(guān)鍵字聲明的變量和const關(guān)鍵字聲明的常量不存在變量提升功能,只能先聲明再使用。
值是否可以更改
使用var關(guān)鍵字和let關(guān)鍵字聲明的變量,可以更改變量的值,但使用const關(guān)鍵字聲明的常量,不能更改常量值對應(yīng)的內(nèi)存地址。
在編寫程序的過程中,如果要存儲的數(shù)據(jù)不需要更改,建議使用const關(guān)鍵字,如函數(shù)的定義、T值或數(shù)學(xué)公式中一些恒定不變的值。由于使用const聲明的常量,其值不能更改,且JavaScript解析引擎不需要實(shí)時(shí)監(jiān)控值的變化,所以使用const關(guān)鍵字要比let關(guān)鍵字效率更高。
北京校區(qū)