var let const 的区别
一、var在解析时会发生变量提升,let和const则不会
示例:
下面展示一些代码。
console.log(a); // undefined 值不明确
var a = 1;
console.log(b); // not defined 没有定义
let b = 2;
console.log(c); // Cannot access 找不到
const c = 3;
下面代码关于var的变量提升
function fn(){
//var a;
if(true){
console.log(a+'num');
}else{
var a = 1;
console.log(2);
}
}
fn() // undefinednum
// 这样会发现不执行代码也会影响执行的代码,
//var变量提升到if前var a;
二、const和let都是块级局部变量
- 只在当前作用域有效
{
let a = 1;
const b = 2;
}
console.log(a); // not defined
console.log(b); // not defined
- const 在声明时必须赋值
const a;
- const 只能声明赋值一次(简单数据类型),即声明后不可修改,复杂数据类型除外
const a = 1;
a = 2;