var、let和const的區別

3scarecrow發表於2019-01-03

 var

  • 首先var有變數提升
console.log(a); // undefined
var a = 1;
  •  function也存在提升現象
console.log(b); //function b(){}
function b(){};
var b;
  • 並且函式提升優先於變數提升

let

  •  let不存在變數提升
console.log(a) // Uncaught ReferenceError: a is not defined
let a;
在程式碼塊內,使用let命令宣告變數之前,該變數都是不可用的。這在語法上,稱為“暫時性死區”(temporal dead zone,簡稱 TDZ)。由於存在TDZ現象,所以let不存在變數提升。
  • 塊級作用域

const

  • 宣告常量,不可再賦值
  • const保證的是變數指向的地址不可變,而不能保證地址指向的值不可變,如果是基本型別,地址指向的就是值,但是如果是引用型別就要注意了,引用型別的值時可變的
const a = 1;
a = 2;// Uncaught TypeError: Assignment to constant variable.
const obj = {age: 10}
obj.age = 20;
console.log(obj.age);// 20

相關文章