Let,const,var 定義的變數都有什麼區別

2021-10-07 08:16:59 字數 2252 閱讀 1388

let 和 var 的區別

1.var 存在變數提公升,let 不存在

//let

console.

log(c)

//uncaught referenceerror: cannot access 'c' before initialization

let c =

100//var

console.

log(c)

//underfined

var c =

100

因為 let 不存在變數提公升,所以上面 let 定義的變數會報錯,報錯的意思是我們想要列印 c 的值,必須先要初始化,然後再去使用它,必須遵循先宣告,後使用的使用規則。

var 定義的變數結果為 underfined **相當於:

var c;

//變數提公升,但是值不能提公升,所以是underfined

console.

log(c)

//underfined

c =100

2.let在同乙個作用域下不可以重複定義同乙個變數值,而var可以
//let

let c =

100let c =

200//報錯 uncaught syntaxerror: unexpected identifier

//var

var c =

100var c =

200

console.

log(c)

//200 正常執行,會覆蓋前乙個值

3.有嚴格的作用域,var屬於函式作用域,let屬於塊級作用域

es5 中作用域有:全域性作用域、函式作用域,沒有塊作用域的概念。

es6 中新增了塊級作用域,塊作用域由****包括,if語句和for語句裡面的也屬於塊作用域。

//let

function

fun(

) console.

log(n)

//10

}fun()

//var

function

fun(

) console.

log(n)

//20

}fun

()

const

1.const 宣告的變數為唯讀的,一旦宣告,常量的值就不能改變

const a =2; 

a=3;//錯誤 uncaught typeerror: assignment to constant variable.

2.const 宣告的變數一定要初始化,不能只宣告不賦值,

const a;

// 錯誤 uncaught syntaxerror: missing initializer in const declaration

//(const宣告中缺少初始化程式)

3.const 宣告的變數只在塊級作用域內有效。

console.

log(a)

// uncaught referenceerror: a is not defined

4.但是用 const 宣告的物件的屬性是可以更改的,const 實質上保證的並不是變數的值不得改動,而是變數指向的記憶體位址的值不得改動,對於簡單型別資料,值就儲存在變數指向的記憶體位址中,相當於常量。而對於複合型的資料,變數指向的是記憶體位址儲存的是乙個指標。const 只能保證指標是不可以被更改,但指標指向的資料結構是可以被改變的。

//以下**正常執行

const obj =

obj.name=

"xiaoke"

console.

log(obj)

// const arr =

arr.

push

("xiaoke"

)console.

log(arr)

// ["xiaoke"]

努力學習中的前端菜菜,如果有錯誤的地方,歡迎指正…

let,const,var定義變數的區別?

一,作用域 const和let 沒有變數提公升,且定義的變數只在let命令所在的 塊生效,在定義之前使用,會報錯 var 變數會被提公升,在全域性範圍內都有效,且可在變數定義之前使用 二 重複宣告 const和let 在同一作用域內,不允許重複宣告同乙個變數 var 允許重複宣告 三 賦值 let ...

js系列 let,const,var定義變數

js是弱型別語言,即值決定變數的型別 命名規範 變數名以字母 開始,後跟字母 數字 不能使用關鍵字 比如true if while class等。不加宣告符 web monkey var宣告符 var web monkey let宣告符 let web monkey const宣告符 cont we...

let const var 的區別有哪些?

在es5中,宣告變數只有var和function兩種形式。但是因為var宣告的變數會有一定的缺點 內層變數可能覆蓋外層變數的問題以及用來計數的迴圈變數洩露為全域性變數,下面會有詳細的介紹 es6提出了使用let和const宣告變數,下面就來看看他們之間的區別。1,什麼時候提出的?var是es5提出的...