[关闭]
@windchimes 2018-02-24T10:46:44.000000Z 字数 403 阅读 302

变量提升

js小知识点


无意中在知乎看到了关于js变量提升的一段小代码,感觉很有意思特地记录一下,原文地址https://zhuanlan.zhihu.com/p/22109292

  1. var a = 1;
  2. function b() {
  3. a = 10;
  4. return;
  5. function a() {}
  6. }
  7. b()
  8. console.log(a)

涉及到的知识点:

1)变量提升和函数声明提升
2)出现重复标识符时,提升是有优先级的,从高到低的优先级分别是函数声明、形参、变量声明

首先解析一下function b内部的提升结果

  1. function b() {
  2. function a () {}
  3. a = 10;
  4. return;
  5. }
所以仅仅执行b函数,得到的结果是a = 10;
但是提升不仅仅在函数内部发生,整体也在发生着函数提升,所以这段代码真正的编译顺序是
  1. function b() {
  2. function a () {}
  3. a = 10;
  4. return;
  5. }
  6. var a =1;
  7. console.log(a)

所以最终结果是1

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注