首页 > 其他分享 >js 预解析

js 预解析

时间:2022-10-26 23:22:53浏览次数:49  
标签:变量 js 代码执行 var 解析 fn

  预解析是js中一个很重要的知识,为了防止忘记和便于后续查找,本博客记录了预解析的重要概念和一些例子。

  一、什么是预解析。

    js引擎运行js会分成两个步骤,一是预解析,二是代码执行。

    (1)预解析指的是,代码执行之前,首先会将js其中所有的变量var和function提前到当前作用域的最前面。

    (2)代码执行是指,按顺序从上到下执行下去。

    更详细的来说,预解析会分为变量(变量提升)和函数(函数提升)这两种预解析,是指分别将变量声明和函数声明提到当前作用域的最前面,不提赋值和调用函数操作。

  二、案例

  1、案例一

 

 

   结合图中预解析过程,执行过程如下:

    (1)将所有的变量声明和函数声明提升,因此提升 var a,var b, function fn() {}至最前面,

    (2)function fn() {}中仍然有变量声明,因此var b提升至fn作用域的最前面。

    (3)然后顺序执行赋值和函数调用

      ① a = 3

      ② console.log(a)  结果为3

      ③ b=5

      ④ fn()

    (4)函数内部执行

      ① console.log(b)  结果为undefined,因为只定义了var b;

      ② b = 14

  2、案例二

 

   最终的结果为:3、3、3、10、13.

  预解析执行的介绍先到这里,后续内容后续章节继续补充

标签:变量,js,代码执行,var,解析,fn
From: https://www.cnblogs.com/gjw0818/p/16826637.html

相关文章

  • b站 bilibili 哔哩哔哩 js小脚本 油猴 查找搜索某年的视频 自动翻页
    varccount=0;varnumnum=5constsleep=(delay)=>newPromise((resolve)=>setTimeout(resolve,delay))while(numnum--){  document.querySelect......
  • react实战笔记137:解析redux的HelloWorld
    增加加的数据不一定直接通过参数传递 传入对象的一个数据格式 对象增加更多属性 redux的最初形态......
  • js 的页面切换
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content......
  • TypeError: Object of type 'ndarray' is not JSON serializabl;TypeError: Object of
    1.python使用​​json.jsonify​​​将结果转为json格式时,爆出如上​​TypeError:Objectoftype'ndarray'isnotJSONserializable​​​错误。(flask)代码如下:@app......
  • hyperf/go/springboot通过jsonrpc通信
    一、背景随着用户的增长和业务的增多,单节点服务已经满足不了需求,用hyperf对主业务进行了重构。hyperf是一个后现代的php框架,基于php+swoole,支持协程,解决了php让人诟病的......
  • .Net内置JSON序列化中文问题
    今天在用System.Text.Json序列化的时候遇到了中文序列化的一个问题,示例如下:JsonSerializer.Serialize(new{Name="你好"});预期结果是:{"Name":"你好"},但得到结果如下......
  • js原型和继承
    原型prototype概述:prototype是属于函数的一个空间,它是一个对象.因为构造函数也是函数所以他也具备.而这个prototype属性我们称为显式原型函数的prototypefunctionf......
  • JS之dom元素和位置有关的属性计算方式
    以下全部属性皆为横向(因为竖向的话只需要把x改为y即可,就不在本文列出) 1.clientWidth:元素内部宽度=width+padding2.offsetWidth:元素内部宽度=width+padding+border+scr......
  • 面试 考察js基础不能不会的内容(第五天)
    01、描述事件冒泡的流程基于DOM树结构,事件会顺着触发元素向上冒泡点击一个div,会一级一级向父级、爷级元素上冒泡,这个点击事件不仅能被这个div捕捉到,也能被他的父级、爷......
  • vue-js中键盘事件编码
    js里面的键盘事件经常用到的:keyCode8=BackSpaceBackSpacekeyCode9=TabTabkeyCode12=ClearkeyCode13=EnterkeyCode16=Shift_LkeyCode17=Control_Lkey......