(es6學習 )var let const的區別
阿新 • • 發佈:2019-05-10
com spa ann 作用域 function access 是我 before ati
let 與 var 的區別
var做的聲明在全局裏都有效 例如:
for(var i=0;i<3;i++){
var a= 1;
}
console.log(a); //1
在for循環裏 變量a泄漏到了全局 但是我們用let 來申聲明
for(var i=0;i<3;i++){
let a= 1;
}
console.log(a); //報錯 a is not defined
用let聲明的變量只在聲明的那個函數作用域裏有用
let聲明之前聲明的變量都不可用狀態,這個被稱為"暫時性死區"
let 與const 不存在變量提升
// console.log(a); Cannot access ‘a‘ before initialization
let a
let不允許在同一個作用域重復聲明
// 報錯
function () {
let a = 10;
var a = 1;
}
// 報錯
function () {
let a = 10;
let a = 1;
}
const 是申明一個常量並且被聲明的常量不可更改;
例如 : const a = 0;
a = 1 // 報錯 Assignment to constant variable.
但是 const a = {
x:0
}
可以操作 a.x = 1;
console.log(a); //{x:1}
但是不可操作
a = {
x:1
}
// 報錯 Assignment to constant variable.
並且const聲明必須馬上賦值
const的作用域與let相同都只作用於聲明的函數內
(es6學習 )var let const的區別