@windchimes
2018-02-24T10:46:44.000000Z
字数 403
阅读 302
js小知识点
无意中在知乎看到了关于js变量提升的一段小代码,感觉很有意思特地记录一下,原文地址https://zhuanlan.zhihu.com/p/22109292
var a = 1;function b() {a = 10;return;function a() {}}b()console.log(a)
涉及到的知识点:
1)变量提升和函数声明提升
2)出现重复标识符时,提升是有优先级的,从高到低的优先级分别是函数声明、形参、变量声明
首先解析一下function b内部的提升结果
function b() {function a () {}a = 10;return;}
所以仅仅执行b函数,得到的结果是a = 10;
但是提升不仅仅在函数内部发生,整体也在发生着函数提升,所以这段代码真正的编译顺序是
function b() {function a () {}a = 10;return;}var a =1;console.log(a)
所以最终结果是1
