资讯专栏INFORMATION COLUMN

js变量提升

BWrong / 2368人阅读

摘要:参考了上面的三份文档,写一下自己对变量提升的总结。中执行上下文特别是创建和执行阶段工作方式的一种认识。变量和函数声明被从它们在代码流中出现的位置移动到代码的顶端。不同的情况下声明的含义存在差别。总结变量必须有创建并且初始化才能正常使用。

Refer:

https://developer.mozilla.org/zh-CN/docs/Glossary/Hoisting
https://www.zhihu.com/question/19636194
https://developer.mozilla.org/zh-CN/docs/Glossary/Hoisting

感谢大牛们对知识的慷慨。参考了上面的三份文档,写一下自己对变量提升的总结。

what:Javascript中执行上下文 (特别是创建和执行阶段)工作方式的一种认识。
how:变量和函数声明被从它们在代码流中出现的位置“移动”到代码的顶端。

不同的情况下***声明***的含义存在差别。

总结:

变量必须有创建并且初始化才能正常使用。
MDN 上的 “变量可以在声明之前进行初始化和使用” 这句话适用于var,不适用与let
var 变量提升了num的创建和初始化, 把num初始化为undefined
let 变量提升了num的创建,但是没有提升初始化,所以抛出异常

提升是以作用域为单位的

var 提升

let 提升

const 提升

函数提升:函数声明会被提升,但是函数表达式不会
函数声明

函数表达式

命名的函数表达式,函数标识符在外围作用域中也是不可用的

函数优先
函数会首先被提升,然后才是变量

后续的函数声明确实会覆盖前一个函数声明

把变量提升拆分三个部分:创建,初始化,赋值。对比如下:

如理解有误:请帮忙指出,万分感谢!!!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102856.html

相关文章

  • js变量提升与函数提升的机制

    摘要:所谓变量提升,提升就是为了事先声明变量。变量提升之后,但其赋值还是留在原本的位置等运行到了之后动态赋值,而函数提升之后直接相当于在代码里抽空了。搞明白这个例子也就搞懂了作用域中变量和函数是怎么提升的。 问题 showImg(https://segmentfault.com/img/bVJ614?w=222&h=165); 在这个例子中它应该输出什么?输出的结果是6。 showImg(h...

    fasss 评论0 收藏0
  • JS中的变量提升和函数提升

    摘要:什么是函数作用域下的变量提升和函数提升函数作用域中也存在变量提升和函数提升,这个和全局作用域下的情况是一模一样的,就是把作用域想成是全局的就可以了。 在js中有一部分比较难以理解,却也是在笔试过程中很容易考的,那就是变量提升和函数提升的问题,这篇文章我会就变量提升和函数提升的问题拓展一下有关js函数的知识点,包括作用域的问题,后面还会有一些小练习来判断自己是否真的搞懂了。 作用域 在j...

    zhunjiee 评论0 收藏0
  • 5分钟深入了解js变量提升

    摘要:对于大多数开发者来说,变量提升可以说是一个非常常见的问题,但是可能很多人对其不是特别的了解。如果说拥有和一样的变量提升效果的话,那么应该是输出。而和它们的变量提升的效果是一样的,也都存在着临死性死区的概念。 对于大多数js开发者来说,变量提升可以说是一个非常常见的问题,但是可能很多人对其不是特别的了解。所以在此,我想来讲一讲。 先从一个简单的例子来入门: a = 2; var a; ...

    tinysun1234 评论0 收藏0
  • js 变量提升和闭包理解

    摘要:变量的作用域无非就是两种全局变量和局部变量。其中内部函数中可以访问外部函数的变量,是因为内部函数的作用域链中包含了外部函数的作用域也可以理解为内部函数的作用范围辐射到了外部函数的作用范围另一方面,在函数外部自然无法读取函数内的局部变量。 以前学习的时候,了解过变量提升和闭包,但是没有深入了解,网上查了资料,这里记录下,只供参考。部分内容引用: https://www.cnblogs.c...

    luoyibu 评论0 收藏0
  • 原型模式故事链(4)--JS执行上下文、变量提升、函数声明

    摘要:代码在执行之前会先全局中变量提升函数声明。函数的执行上下文,也就是在这个函数范围内找到函数执行上下文中函数范围内,所有用声明的变量。函数执行时,按照执行位置查找变量作用域只会向上查找。下一回变量作用域与闭包 上一章:JS的数据类型 传送门:https://segmentfault.com/a/11... 好!话不多少,我们就开始吧。对变量提升和函数声明的理解,能让你更清楚容易的理解,...

    melody_lql 评论0 收藏0
  • 原型模式故事链(4)--JS执行上下文、变量提升、函数声明

    摘要:代码在执行之前会先全局中变量提升函数声明。函数的执行上下文,也就是在这个函数范围内找到函数执行上下文中函数范围内,所有用声明的变量。函数执行时,按照执行位置查找变量作用域只会向上查找。下一回变量作用域与闭包 上一章:JS的数据类型 传送门:https://segmentfault.com/a/11... 好!话不多少,我们就开始吧。对变量提升和函数声明的理解,能让你更清楚容易的理解,...

    zhigoo 评论0 收藏0

发表评论

0条评论

BWrong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<