关于ES6中出现的let与var的区别,已经在上篇中详细说过
如需阅读可点击链接
ES6中出现的let与var的区别
本次要说的是对上次没有提到的知识的一个增加
先看代码:
var i="这是一个测试";
if(true){
console.log(i); //i is not defined
let i="这个测试是会报错的";
}
分析原因:
在上篇博客中说过,let是不能进行变量声明提升的,在if判断中,代码读取到在当前的判断中定义了变量i,所以在执行的 时候就会向if判断外执行获取变量i了。但是在代码的执行过程中,由于let定义的变量i写在了console的后面,而代码执行是自上而下的执行的,在执行console语句是找不到定义的变量i,就会提示报错。