let var const的具體區別

2021-10-04 00:21:52 字數 2613 閱讀 3582

if

(true)

console.

log(a)

;//a沒有被定義

這裡的乙個塊級作用域就是這if大括號內注意在定義變數的時候 (無論是var,let還是const) ,都盡量都要先賦初始值,因為如果不賦初始值那麼undefined與任何數字進行加減乘除的時候結果都為nan

不了解變數提公升的小夥伴可以去

舉個例子:

解釋解釋這裡:每一次for迴圈會產生乙個塊級作用域,而每乙個塊級作用域裡面的i有不同的值,所以每乙個函式在呼叫的時候都在其對應的作用域內查詢i的值

//在迴圈體內的i

console.

log(i)

;//在迴圈體外的i,輸出為10

舉個栗子:

var arr=

;//arr和i都是全域性變數

為什麼會這樣呢,說說我的理解:i是個全域性變數,且函式裡面的i是在呼叫的時候進行賦值的,而當for迴圈完成的時候i=3,使用輸出結果都是3

當然這裡可以使用閉包來實現let的效果(因為函式是有作用域的)

這大家都了解,就不贅述了

if

(true

) console.

log(a)

;//訪問不到a

10;// a=20; 這裡的a不可修改

console.

log(a)

;const arr=[10

,20];

arr[0]

=30; arr[1]

=40;//arr=[50,60] 這樣是不允許的,改變了arr位址

console.

log(arr)

;//arr的值沒有修改,而修改了值(位址)對應的值

const obj=

; obj.name=

'小華'

; obj.age=20;

console.

log(obj)

;//obj的值沒有修改,而修改了值(位址)對應的值

這裡的修改值是沒有修改常量的值(位址),而是修改了值的位址裡面的值本文只用於個人學習和記錄

let,var,const的使用區別

一 let宣告變數 1.let宣告的變數不會掛在window中,不會造成全域性變數的汙染 2.新增了乙個塊級作用域 以前只有函式作用域,全域性作用域 3.let是不允許重複宣告 4.let不會有宣告提前 只是人為看到的效果,實際上是有宣告提前,提前臨時性的死區中 cannot access num ...

let var const之間的區別

let是es6的新語法,用來區域性變數和var類似但是let只在 塊裡有效,也就是塊作用域 變數提公升是什麼意思這裡很多小夥伴會理解錯 var a 10 func function func 很奇怪這裡為什麼是undifined這就是變數提公升 上面的 等價於 var的變數提公升就是會先把var定義...

typedef和define具體的詳細區別

1 define是預處理指令,在編譯預處理時進行簡單的替換,不作正確性檢查,不關含義是否正確照樣帶入,只有在編譯已被展開的源程式時才會發現可能的錯誤並報錯。例如 define pi 3.1415926 程式中的 area pi r r 會替換為3.1415926 r r 如果你把 define語句中...