js 中的变量提升和函数提升
js 中的变量提升和函数提升
复制代码
复制代码
打印的值第一个为 undefined,而第二个打印的值为 yyyyy.
复制代码
实际的方法内部代码执行顺序应该是这样的:
复制代码
看到拆分后的代码执行顺序对结果也就不迷茫了。
为什么有变量提升
==那么为什么会出现变量提升这个现象呢?==
其实 js 和其他语言一样,都要经历编译和执行阶段。而 js 在编译阶段的时候,会搜集所有的变量声明并且提前声明变量,而其他的语句都不会改变他们的顺序,因此,在编译阶段的时候,第一步就已经执行了,而第二步则是在执行阶段执行到该语句的时候才执行。
总结
1.js 会将变量的声明提升到 js 顶部执行,因此对于这种语句:var a = 2;其实上 js 会将其分为 var a;和 a = 2;两部分,并且将 var a 这一步提升到顶部执行。
2.变量提升的本质其实是由于 js 引擎在编译的时候,就将所有的变量声明了,因此在执行的时候,所有的变量都已经完成声明。3.当有多个同名变量声明的时候,函数声明会覆盖其他的声明。如果有多个函数声明,则是由最后的一个函数声明覆盖之前所有的声明。
版权声明: 本文为 InfoQ 作者【北洋】的原创文章。
原文链接:【http://xie.infoq.cn/article/4fe6e1b40da8056198f484770】。文章转载请联系作者。
评论