看了许多关于介绍Javascript变量提升的文章,刚开始跟着示例去看时似懂非懂,经过自己敲代码测试后才有所理解,因此写下笔记便于自己以后可参考。
在执行JavaScript语句时共经历两个阶段,编译阶段(预解释)和执行阶段。在编译阶段,函数与变量在申明时会提升到所在作用域(方法体内)的最顶部,函数申明优先于变量,同时存在函数和变量申明情况下,函数会在变量的顶部。而函数内申明变量和函数时同样会有变量提升的(与前面讲的同理)。申明的函数如果是表达式的方式,则该申明变量提升 而表达式不会提升,效果如下:
示例代码(预解释前):
预解释后:
变量和函数会提升,而赋值、函数调用等操作在所有申明提升(编译期)完成后按原来先后顺序等待执行。
网友评论