资讯专栏INFORMATION COLUMN

变量和函数提升

xiguadada / 2597人阅读

摘要:代码的执行分为两个步骤预解析提升代码在预解析阶段,会对以声明的变量名,和开头的语句块,进行提升操作执行变量的提升提升之后的代码模拟函数同名,如何提升预处理的时候,会将两个函数全部提升,但是后面的函数会覆盖掉前面函数预解析提升后的代码变量和函

js代码的执行分为两个步骤

1.预解析

</>复制代码

  1. 提升(hoisting)
  2. JavaScript代码在预解析阶段,会对以var声明的变量名,和function开头的语句块,进行提升操作

2.执行

</>复制代码

  1. func();
  2. function func(){
  3. alert("Funciton has been called");
  4. }
  5. //变量的提升
  6. alert(a);
  7. var a = 1;
  8. //提升之后的代码模拟
  9. var a;
  10. alert(a);
  11. a = 1;

函数同名,如何提升

预处理的时候,会将两个函数全部提升,但是后面的函数会覆盖掉前面函数

</>复制代码

  1. func1(); //last
  2. function func1(){
  3. console.log("This is first func1");
  4. }
  5. func1(); //last
  6. function func1(){
  7. console.log("This is last func1");
  8. }
  9. //预解析提升后的代码
  10. function func1(){
  11. console.log("This is first func1");
  12. }
  13. function func1(){
  14. console.log("This is last func1");
  15. }
  16. func1(); //last
  17. func1(); //last

变量和函数同名

在提升的时候,如果有变量和函数同名,会忽略掉变量,只提升函数

</>复制代码

  1. alert(foo); //undefined 函数体
  2. function foo(){}
  3. var foo = 2;
  4. alert(foo); //2
  5. //预解析 提升后的代码
  6. function foo(){};
  7. alert(foo);
  8. foo=2;
  9. alert(foo);

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

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

相关文章

  • JS中的变量提升函数提升

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

    zhunjiee 评论0 收藏0
  • 变量函数声明提升

    摘要:声明提升变量和函数声明提升发生在预编译阶段。上面代码,函数内相当于对全局变量进行赋值函数声明提升创建函数有两种方式,函数声明和函数表达式,只有函数声明存在提升。同时声明变量和函数显示的是,初步证明的优先级高于。 声明提升 变量和函数声明提升发生在JavaScript预编译阶段。 所谓的声明提升,就是说变量或者函数在声明的时候会被提前到当前作用域的顶部,已经处于可访问状态。 变量声明提升...

    FleyX 评论0 收藏0
  • js变量提升函数提升的机制

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

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

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

    luoyibu 评论0 收藏0
  • javascript声明提升

    摘要:但是碰到声明提升,这种想法就会被打破。声明一个函数进行相应的操作,会得到函数声明提升的结果。由此可以发现变量和函数的声明都会被提升在其他代码的前面执行。一个普通块内部的函数声明通常会被提升到所在的作用域的顶部。的创建初始化和赋值均会被提升。 Javascript声明提升 在分析声明提升之前,我认为有必要知道的两点: 一、引擎查询变量的两种方式 引擎查询变量的方式可以分为LHS和RHS两...

    evin2016 评论0 收藏0
  • 【6】JavaScript 函数高级——执行上下文与执行上下文栈、变量提升(图解+典型实例分析)

    摘要:函数和变量相比,会被优先提升。这意味着函数会被提升到更靠前的位置。仅提升声明,而不提升初始化。 JavaScript 函数高级——执行上下文与执行上下文栈(图解+典型实例分析) 变量提升与函数提升 变量声明提升 通过 var 定义(声明)的变量,在定义语句之前就可以访问到 值:undefined /* 面试题 : 输出 undefined */ var a = 3 ...

    niuxiaowei111 评论0 收藏0

发表评论

0条评论

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