var let const区别
var 是es5中的, let 和 const 是es6中的
1.var定义变量,没有块的概念,可以跨块访问,不能跨函数访问,不初始化出现undefined,不会报错。
2.let定义变量,只能在块作用域里访问,也不能跨函数访问,对函数外部无影响。
3.const定义常量,只能在块作用域里访问,也不能跨函数访问,使用时必须初始化(即必须赋值),而且不能修改。
function fn(){
var a = 1;
let b = 2;
const c = 3;
console.log(a) // 1
console.log(b) // 2
console.log(c) // 3
}
fn();
console.log(a) // 报错
console.log(b) // 报错
console.log(c) // 报错
//由此可知,不管是 var let const 都不能跨函数访问
{
var d = 1;
let e = 2;
const f = 3;
console.log(d) // 1
console.log(e) // 2
console.log(f) // 3
}
console.log(d) // 1
console.log(e) // 报错
console.log(f) // 报错
//由此可知 var 可以跨块作用,而 let const 不行
//*注: for、if属于块作用域
{
var aa;
let bb;
const cc; //报错
}
//const必须定义之后立即赋值,因为const定义的是常量
//而 var 和 let 可以不用
{
var g = 1;
let h = 2;
const i = 3;
g = 4;
h = 5;
i =6; //报错
}
//const不能被重新赋值,而 var 和 let 可以