一、除了var能在定义之前访问它的变量,另两个都不能在定义之前访问
console.log(a); // undifine
var a;
a = 1;
console.log(b); // 报错
let b;
b = 1;
console.log(D); // 报错
const D = 12; // 定义时,需赋值,且后续无法更改,否则报错
方法也可在定义之前访问它,由于const、let定义的变量时,会导致锁区,限制在定义之前,无法访问它们。
二、作用域不同
1、var 变量可以重复定义,而let 变量不可以,但能再次赋值,const 无法再次赋值,和java 的final 修饰的差不多。
2、块级作用域:非函数的 {} 称为块级作用域;函数的 {} 称为局部作用域。var 具有函数作用域与全局作用域,而let 具有块级作用域;当块级作用域中,使用 let 变量,无法影响全局的相同 let 或 var 变量,但是未使用 let 或使用 var ,则会影响全局相同变量。