var 首先var有變數提升 首先var有變數提升 console.log(a); // undefined var a = 1; function也存在提升現象 function也存在提升現象 console.log(b); //function b(){} function b(){}; var ...
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