變量
{ //ES5定義變量
var PI = 3.14
//ES6定義變量
let PI2 = 3.14
}
console.log(PI) //3.14
console.log(PI2) //PI2 is not defined
分別用let和var聲明了兩個(gè)變量。然后在代碼塊之外調(diào)用這兩個(gè)變量棕洋,結(jié)果let聲明的變量報(bào)錯(cuò)挡闰,var聲明的變量返回了正確的值。這表明掰盘,let聲明的變量只在它所在的代碼塊有效摄悯。
常量
一旦聲明,常量的值就不能改變愧捕。
代碼:
//ES5定義常量
Object.defineProperty(window, "PI2", {
value: 3.1415926,
writable: false
})
//ES6定義常量
const PI = 3.1415926
- const聲明的變量不得改變值奢驯,這意味著,const一旦聲明變量晃财,就必須立即初始化叨橱,不能留到以后賦值。
需要注意的是:const的作用域與let命令相同:只在聲明所在的塊級(jí)作用域內(nèi)有效断盛。
都不存在變量提升
var命令會(huì)發(fā)生”變量提升“現(xiàn)象罗洗,即變量可以在聲明之前使用,值為undefined钢猛。這種現(xiàn)象多多少少是有些奇怪的伙菜,按照一般的邏輯,變量應(yīng)該在聲明語(yǔ)句之后才可以使用