ES6之前如何定义变量
var num;
- 可以重复定义变量,会覆盖
var num = 123;
var num = 456; // 后定义覆盖先定义
- 会对变量进行预解析
console.log(num); // 由于会预解析, 所以输出undefined
var num = 123;
/*
预解析过程:
var num;
console.log(num);
num = 123;
*/
ES6之后如何定义变量
let num;
- 不允许重定义变量
let num = 123;
let num = 456; // 报错,不允许重复定义
- 没有预解析
console.log(num);
let num = 123; // let定义的变量不会预解析,会报错:num is not defined
ES6新增的定义常量的关键字
const num = xxx;
- 常量不能修改
const num = 123;
num = 456; //报错
- 常量必须在定义的同时初始化
const num;
num = 123; //报错,应该定义的同时初始化
- 常量的指向不能改变, 但是指向内存中保存的数据可以改变
const arr = [1, 3];
// arr = [2, 4]; // 改变指向 ,报错
arr[0] = 666; // 指向内存中保存的数据可以改变
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); // 报错 num is not defined
{
const num2 = 123;
}
// console.log(num2); //报错 num2 is not defined