欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

js变量提升和函数声明预解析实例详解

程序员文章站 2022-03-30 15:38:56
...

1.首先理解函数作用域

在JavaScript中,变量的定义并不是以代码块作为作用域的,而是以函数作用作用域的。也就是说,如果变量是在某个函数中定义的,那么它在函数以外的地方是不可见的。而如果该变量是定义在if 或者for这样的代码块中,它在代码块之外是可见的。另外,在JavaScript中,术语“全局变量”指的是定义在所有函数之外的变量,与之相对的是“局部变量”,所指的是在某个函数中的变量。其中,函数内的代码可以像访问自己的局部变量那样访问全局变量,反之则不行。

2.变量提升

在JavaScript代码运行之前其实是有一个编译阶段的。编译之后才是从上到下,一行一行解释执行。变量提升就发生在编译阶段,它把变量和函数的声明提升至作用域的顶端。(编译阶段的工作之一就是将变量与其作用域进行关联)。
所以对于代码var a =2;来说,编译器看到的是两行代码var a; a = 2;第一个语句是声明语句,在编译阶段处理。第二个语句是赋值语句,在运行阶段处理。

1.提升的部分只是变量声明,赋值语句和可执行的代码逻辑还保持在原地不动
2.提升只是将变量声明提升到变量所在的变量范围的顶端,并不是提升到全局范围
3.变量声明和函数声明都会得到变量提升,但函数声明会最先得到提升,然后是变量声明。
4.对于函数声明来说,如果定义了相同的函数变量声明,后定义的声明会覆盖掉先前的声明

以上就是js变量提升和函数声明预解析实例详解的详细内容,更多请关注其它相关文章!