区别一 :
- 原始js使用var进行变量的定义
- 只存在两个作用域:全局作用域 局部作用域
- ES6之后:新增定义变量的方式 let 与const
- 新增一个作用域:块级作用域
if(true){
var x = 20;
}
console.log(x); // 20
if(true){
let y = 20;
}
console.log(y); // 报错,变量y未定义
区别二 : 利用var 定义变量 存在变量的默认提升功能,let与const不存在这个问题
console.log(x); // undefined
var x=20
console.log(x); // 报错
let x=20
区别三: 利用var定义变量可以重复定义,但是let 和const不可以
var index = 20
var index = 30
console.log(index); // 30
let index = 20;
let index = 30;
console.log(index); //报错
区别四: 利用var定义的变量,会自动挂载到window,但是let和const不会
var x = 20;
console.log(window.x); // 20
let y = 30;
console.log(window.y); // undefined
区别五:
- let和const 存在暂时性死区问题
- 使用let定义变量 在声明之前 永远不可用
var a = 30;
if(true){
a = 40;
console.log(a); // 报错
let a = 50;
}
区别六:const用于定义常量,定义时必须赋初始值,且不能更改
const a = 10;
console.log(a); // 10
a = 12;
console.log(a); // 报错