所谓预解析就是关键字定义的变量在代码执行之前被读一遍
举例子:
先var一个变量a,再打印
再var一个变量b,也能打印出来
但是先打印b,再var 变量b,则打印出来的内容是undefined,这说明读取的顺序是先读取关键字,再自上而下的读代码!!!!!
一旦有任何一个声明变量是错的,则整段代码都无法运行!!!!!!!!!
简单来说
let可以很好的解决这个问题,let必须先声明再使用,就是不会被预先解析
(let与const的区别,let是声明变量,const是声明常量)
不先声明会直接报错嘞
关于函数
如果函数体内没有声明变量,会往上找,找不到就报错啦
这种情况会找函数体内(a=1111)的变量a,打印出来的结果是报错,因为必须在使用之前先声明变量
这种情况也是会报错的,因为a没有事先声明
但是这样就不会报错