var name=“jack”等价于name = "jack" var=name?

img


为什么第一个等价不是跟第二个等价一样,即
var name = "jack"
等价于
var name;
name = "jack"
红宝书第91页

这个,和JS的解释规则有关系。JS在运行前,会扫描整个代码,所有全局变量都会提前声明。也就是说,不管var写在前后,只要是全局变量,都会提前声明。

写错了吧,哪有变量还没定义就赋值的

这个是js早期的一个特性叫变量提升,用var声明的变量都有这个特性。

现在都es6了建议除了学习之外不要用var,用let和const。let和const没有变量提升更符合一般程序员思维