ES6中var let const的區別

2022-07-23 14:24:28 字數 1768 閱讀 9858

最近無聊看了一下前端面試題,看到不少地方要求列出var/let/const的異同,自己整理一下,算加深一下記憶。

1.作用域

var為全域性作用域,而let和const為區域性作用域(僅作用在大括號內),舉個簡單例子:

1

if(true

)6 console.log(a) //

a列印出來為 1

7 console.log(b) //

b is not defined

8 console.log(c) //

c is not defined

2.變數宣告

var和let可以僅宣告不賦值,但是const必須賦值,否則報錯

var a = 1 //

正確let b = 1 //

正確const c = 1 //

正確var d //

正確 d列印為undefined

let e //

正確 e列印為undefined

const f //

錯誤

3.是否可修改

var和let宣告的變數,可隨意修改;const宣告的變數,若為基本資料型別不可修改,若為引用資料型別,可修改值,不可修改引用位址。

vue父子元件傳值,子元件中的props為const宣告的變數,若為陣列,清空陣列的時候可以用array.length = 0(若為array = 會報錯,因為修改了引用位址);

var a = 1;

a =2;

console.log(a) //2

let b = 1;

b = 2;

console.log(b) //2

//c為基本資料型別不可修改

const c = 1;

c = 2; //

報錯//

d為引用資料型別

const d = [1,2,3];

d.push(4);//

對引用資料型別進行值的修改可進行

console.log(d);//

[1,2,3,4]

d = [1,2,3,4,5] //

對引用資料型別進行位址修改,報錯

4.是否可重複宣告

var可以重複宣告;let和const不可重複宣告.

var a = 1;

var a = 2; //

不報錯,可重複宣告

console.log(a); //2//

let 和 const 情況相同

let a = 3;//

報錯,上面已經宣告過a(var 宣告的也不可以)

let b = 1;

let b =2; //

報錯,上面已經宣告過b

5.變數提公升

var 宣告的變數會進行變數提公升,但是賦值不提公升;let和const宣告的變數不會提公升。

console.log(a);//

a為undefined

var a =1;

console.log(a);

//a為1

//let和const情況相同

console.log(b);//

報錯,提示 b is not defined

let b =1;

console.log(b);

//b為1

ES6中var,let,const的區別

function scope 指的是var定義的變數的作用於實在乙個function中,如果外側沒有function,則為全域性 if 1 1 console.log count 在函式中 varf1 function f1 console.log count 塊作用域值得是變數的作用域只能是自身定...

ES6學習(var,let,const區別)

本人寫這個專題的部落格是為了總結一下自己學習,使用還有刷題時學到的es6知識點,並做以歸納。三個屬性都可以宣告變數。var 重新賦值,重新定義變數,可以重複宣告,但是後者的值會覆蓋前者的值。作用域 function 如果在全域性中,作用域為windows var宣告的變數會暴露在全域性。let 作用...

ES6學習(var let const 的區別)

var宣告的變數可重新賦值和重複定義 var price 100 var宣告的變數可重新賦值和重複定義 price 200 console.log price var price 100 var宣告的變數可重新賦值和重複定義 var price 200 console.log price 以上兩端 ...