let和var区别
var出了块级区域有效
let出了块级无效
var声明均视为作用域顶部声明 因为var具备变量提升能力
let声明不具备变量提升能力,离开作用域后就会马上失效,适合局部变量容易掌控
变量提升还带有一个问题,声明之前使用产生的结果不相同
var在后面声明前面输出值逻辑怪异,结果显示undefined一般表示变量声明,只是没赋值,一般顺序都是在前面
例子:
console.log(value);
var value;
变量提升导致逻辑怪异
let声明方式不管前后都是引用错误
例子:
//let count放前面可以用符合逻辑
// console.log(count);
// let count//错的详细
var重复声明只取后面的值
let不能重复声明,重复声明会报错只能声明一个其中一个是var也不行
可以一个在作用域内部,一个在外部(不能使用会混乱)
循环时,var和let区别更明显
let只在内部循环有效,后续使用i不会受到干扰
var全局都有效,但是在使用i会受到干扰
let和const
const的声明的作用:创建一个常量,声明就不可以更改
和let相同的是,const声明后无法提升,存在临时死区
临时死区:if(true){
死区开始
vlue=10;
console.log(vule);
死区结束
}
和let不同的是,const声明后不立马赋值就会报错