最近無聊看了一下前端面試題,看到不少地方要求列出var/let/const的異同,自己整理一下,算加深一下記憶。
1.作用域
var為全域性作用域,而let和const為區域性作用域(僅作用在大括號內),舉個簡單例子:
12.變數宣告if(true
)6 console.log(a) //
a列印出來為 1
7 console.log(b) //
b is not defined
8 console.log(c) //
c is not defined
var和let可以僅宣告不賦值,但是const必須賦值,否則報錯
var a = 1 //3.是否可修改正確let b = 1 //
正確const c = 1 //
正確var d //
正確 d列印為undefined
let e //
正確 e列印為undefined
const f //
錯誤
var和let宣告的變數,可隨意修改;const宣告的變數,若為基本資料型別不可修改,若為引用資料型別,可修改值,不可修改引用位址。
vue父子元件傳值,子元件中的props為const宣告的變數,若為陣列,清空陣列的時候可以用array.length = 0(若為array = 會報錯,因為修改了引用位址);
var a = 1;4.是否可重複宣告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] //
對引用資料型別進行位址修改,報錯
var可以重複宣告;let和const不可重複宣告.
var a = 1;5.變數提公升var a = 2; //
不報錯,可重複宣告
console.log(a); //2//
let 和 const 情況相同
let a = 3;//
報錯,上面已經宣告過a(var 宣告的也不可以)
let b = 1;
let b =2; //
報錯,上面已經宣告過b
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 以上兩端 ...