这个,和JS的解释规则有关系。JS在运行前,会扫描整个代码,所有全局变量都会提前声明。也就是说,不管var写在前后,只要是全局变量,都会提前声明。
写错了吧,哪有变量还没定义就赋值的
这个是js早期的一个特性叫变量提升,用var声明的变量都有这个特性。
现在都es6了建议除了学习之外不要用var,用let和const。let和const没有变量提升更符合一般程序员思维