ES6之前如何定義變量
var num;
- 可以重復(fù)定義變量摆马,會(huì)覆蓋
var num = 123;
var num = 456; // 后定義覆蓋先定義
- 會(huì)對(duì)變量進(jìn)行預(yù)解析
console.log(num); // 由于會(huì)預(yù)解析, 所以輸出undefined
var num = 123;
/*
預(yù)解析過程:
var num;
console.log(num);
num = 123;
*/
ES6之后如何定義變量
let num;
- 不允許重定義變量
let num = 123;
let num = 456; // 報(bào)錯(cuò),不允許重復(fù)定義
- 沒有預(yù)解析
console.log(num);
let num = 123; // let定義的變量不會(huì)預(yù)解析咳焚,會(huì)報(bào)錯(cuò):num is not defined
ES6新增的定義常量的關(guān)鍵字
const num = xxx;
- 常量不能修改
const num = 123;
num = 456; //報(bào)錯(cuò)
- 常量必須在定義的同時(shí)初始化
const num;
num = 123; //報(bào)錯(cuò)伴挚,應(yīng)該定義的同時(shí)初始化
- 常量的指向不能改變, 但是指向內(nèi)存中保存的數(shù)據(jù)可以改變
const arr = [1, 3];
// arr = [2, 4]; // 改變指向 ,報(bào)錯(cuò)
arr[0] = 666; // 指向內(nèi)存中保存的數(shù)據(jù)可以改變
arr.push(777);
console.log(arr); // [666, 3, 777]
ES6Z之前沒有代碼塊的概念,ES6語法有代碼塊的概念
- ES6之前
{
var num = 123;
console.log(num); //123
}
console.log(num); //123
- ES6之后
{
let num = 123;
console.log(num); //123
}
//常量一樣
console.log(num); // 報(bào)錯(cuò) num is not defined
{
const num2 = 123;
}
// console.log(num2); //報(bào)錯(cuò) num2 is not defined