JS变量提升
代码示例:
var color = "blue"; // 全局变量 color function changeColor() { console.log(color); var color = "red"; console.log(color); } changeColor();
运行结果为:
undefined
red
在执行函数时,函数内部声明的所有变量都会被隐式移动(或者说提升)到函数最开始的地方,并且被提升的只有变量的声明,而与之相关的赋值操作并不会提升,它还在其原来的位置上,也正因为这一特性,所以出现了与我们预期不符的结果。而实际上以上代码等同于如下代码:
var color = "blue"; // 全局变量 color function changeColor() { var color; // 将局部变量 color 声明放到函数开始地方 console.log(color); color = "red"; // 对局部变量 color 进行赋值 console.log(color); } changeColor();
运行结果为:
undefined
red
参考书籍:《JavaScript面向对象编程指南》
艺无止境,诚惶诚恐, 感谢开源贡献者的努力!!