欢迎光临散文网 会员登陆 & 注册

初学JavaScript,浅谈变量提升

2021-04-17 09:56 作者:光耀三十洲  | 我要投稿

ES6之前我们一般使用var来声明变量,提升简单来说就是把我们所写的类似于var a = 123;这样的代码,声明提升到它所在作用域的顶端去执行,到我们代码所在的位置来赋值。

学习更多,请点击:https://www.bilibili.com/video/BV1g84y1F7vS

                                https://www.bilibili.com/video/BV1a54y1b7hh

                                https://www.bilibili.com/video/BV17h411U7L7

                                https://www.bilibili.com/video/BV1wB4y1A7d2

                                https://www.bilibili.com/video/BV1m64y1S7Rx

学习更多,请点击:https://www.bilibili.com/video/BV1g84y1F7vS

                                https://www.bilibili.com/video/BV1a54y1b7hh

                                https://www.bilibili.com/video/BV17h411U7L7

                                https://www.bilibili.com/video/BV1wB4y1A7d2

                                https://www.bilibili.com/video/BV1m64y1S7Rx

2、函数提升

javascript中不仅仅是变量声明有提升的现象,函数的声明也是一样;具名函数的声明有两种方式:

学习更多,请点击:https://www.bilibili.com/video/BV1g84y1F7vS

                                https://www.bilibili.com/video/BV1a54y1b7hh

                                https://www.bilibili.com/video/BV17h411U7L7

                                https://www.bilibili.com/video/BV1wB4y1A7d2

                                https://www.bilibili.com/video/BV1m64y1S7Rx

函数字面量式的声明与变量提升的结果是一样的,函数只是一个具体的值; 但是函数声明式的提升现象和变量提升现象又不尽相同

先来个例子

学习更多,请点击:https://www.bilibili.com/video/BV1g84y1F7vS

                                https://www.bilibili.com/video/BV1a54y1b7hh

                                https://www.bilibili.com/video/BV17h411U7L7

                                https://www.bilibili.com/video/BV1wB4y1A7d2

                                https://www.bilibili.com/video/BV1m64y1S7Rx

  • 编译阶段:(由编译器执行)

  1. 变量和函数声明提升到全局执行上下文的最顶端:scope对象里面的数据:(小结会解释什么是scope对象)

此时调用shoWName()会执行覆盖后的通过函数字面量声明的shoWName()函数执行console.log(2)这句代码,输出 2。

小结:

  1. 只有声明本身会被提升,而赋值操作不会被提升。

  2. 函数声明会被提升,但函数表达式不会被提升。

  3. scope 对象,存放当前代码执行上下文中的所有变量的引用

  4. 代码一定是逐行运行的

  5. 分为编译阶段和执行阶段

  6. 变量提升后,会给变量设置默认值undefined

学习更多,请点击:https://www.bilibili.com/video/BV1g84y1F7vS

                                https://www.bilibili.com/video/BV1a54y1b7hh

                                https://www.bilibili.com/video/BV17h411U7L7

                                https://www.bilibili.com/video/BV1wB4y1A7d2

                                https://www.bilibili.com/video/BV1m64y1S7Rx


作者:东理_子龙
链接:https://juejin.cn/post/6951244051534659597
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


初学JavaScript,浅谈变量提升的评论 (共 条)

分享到微博请遵守国家法律