JavaScript 预解析(面试经常问)

2023-11-02

文章目录

预解析

  1. 解析器运行 JS 分为哪两步:预解析+执行代码

    预解析: js 引擎会把 js里面所有 var 还有 function 提前到当前作用域的最前面
    执行代码:从上到下执行

    预解析分为:变量预解析(变量提升) 和函数预解析(函数提升)

  2. 变量提升的步骤和运行过程:
    就是把所有的变量声明提升到当前作用域的最前面,不提升赋值操作
    在这里插入图片描述
    这里先定义了函数,但是没有赋值就调用在这里插入图片描述

  3. 函数提升的步骤和运行过程
    就是把所有函数声明提升到当前作用域的最前面,不调用函数

例子

f1();
        console.log(c);
        console.log(b);
        console.log(a);
        function f1() {
            var a = b = c = 9;
            console.log(a);
            console.log(b);
            console.log(c);
        }


        // 相当于

        function f1() {
            var a = b = c = 9;

            //相当于 var a = 9;b = 9;c = 9;  b  和  a 没有var声明,当全局变量看
            //集体声明的写法:  var a = 9, b = 9 ,c = 9;
            console.log(a);  //9
            console.log(b);  //9
            console.log(c);  //9
        }

        f1();
        console.log(c);  //9
        console.log(b);  //9
        console.log(a);  //  报错

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 预解析(面试经常问) 的相关文章

随机推荐

  • Spring Boot中使用token:jwt

    token由3部分组成 Header Payload Signature 其中Header记录了签名算法和token 的类型 Payload是以明文存储的一些信息 包括用户自定义信息 Signature是使用签名算法 对Payload结合服
  • Android RxJava:组合 / 合并操作符 详细教程

    前言 Rxjava 由于其基于事件流的链式调用 逻辑简洁 使用简单的特点 深受各大 Android开发者的欢迎 Github截图 如果还不了解 RxJava 请看文章 Android 这是一篇 清晰 易懂的Rxjava 入门教程 RxJav
  • 04-----关于Qt下编译大文件的源码时报too many section

    1 关于Qt下编译大文件的源码时报too many section 这种问题是因为编译源码文件太大造成的 解决的方法如下 因为不同Qt版本可能添加的宏不一样 所以大家可能需要试一试下面的编译参数 我是用 Wa mbig obj 这个参数解决
  • Java面试题大全(整理版)附答案详解最全面看完稳了

    文末有彩蛋 进大厂是大部分程序员的梦想 而进大厂的门槛也是比较高的 所以这里整理了一份阿里 美团 滴滴 头条等大厂面试大全 其中概括的知识点有 Java MyBatis ZooKeeper Dubbo Elasticsearch Memca
  • 前端面试之道

    小册介绍 如果需要用一句话来介绍这本小册的话 一年磨一剑 应该是最好的答案了 为什么这样说呢 在出小册之前 我收集了大量的一线大厂面试题 通过大数据统计出了近百个常考知识点 然后根据这些知识点写成了这本小册 这本小册可以说是一线互联网大厂的
  • Win7封装全过程

    安装操作系统是个漫长而无聊的过程 我们个人安装原版系统都要花费半小时以上的时间 想象一下 一个500 1000 上万人的公司要是按这种方式装的话要花费多少时间 人力 物力 还好 系统制造商早就考虑到了这一点 有自己的应对之策 这就是操作系统
  • P10.编程生成Excel内图表

    P10 编程生成Excel内图表 md 插入图片 openpyxl插入图片 openpyxl drawing image sheet add image 例 from openpyxl drawing image import Image
  • Chapter Two : Python 语言基础、运算符与表达式、程序的控制结构合集

    目录 一 Python 语言基础 1 Python 语法规则 2 关键字与标识符 3 变量 4 基本数据类型 5 输入与输出 二 运算符与表达式 1 算术运算符 2 赋值运算符 3 比较 关系 运算符 4 逻辑运算符 5 位运算符 6 赋值
  • 2023华为OD统一考试(B卷)题库清单(按算法分类),如果你时间紧迫,就按这个刷

    目录 专栏导读 华为OD机试算法题太多了 知识点繁杂 如何刷题更有效率呢 一 逻辑分析 二 数据结构 1 线性表 数组 双指针 2 map与list 3 优先队列 4 滑动窗口 5 二叉树 6 并查集 7 栈 三 算法 1 基础算法 贪心算
  • xml文件报错Unable to resolve column ‘xxx‘

    项目场景 问题描述 我在使用mybatis的逆向工程时生成的xml文件报错Unable to resolve column xxx 原因分析 需要连接到数据库 解决方案 点击右侧 填写数据库信息 点击测试 报错的话点击下放Set time
  • shell 格式化输出密码

    格式化输出 etc passwd 效果如下 root zabbix server day6 awk F BEGIN print 用户名 UID 家目录 print 1 3 6 etc passwd 用户名 UID 家目录 root 0 ro
  • Unity 移动方法总结

    Unity移动方法总结 在Unity3D中 有多重方式可以改变物体的坐标 实现移动的目的 其本质是每帧改变物体的position 通过Transform组件移动物体 Transform组件用于描述物体在空间中的状态 它包括位置 positi
  • transformers库的使用【二】tokenizer的使用,模型的保存自定义

    使用标记器 tokenizer 在之前提到过 标记器 tokenizer 是用来对文本进行预处理的一个工具 首先 标记器会把输入的文档进行分割 将一个句子分成单个的word 或者词语的一部分 或者是标点符号 这些进行分割以后的到的单个的wo
  • C——编译预处理

    编译预处理 1 宏定义 2 文件包含 3 条件编译 C语言提供的预处理 在编译之前进行 主要有三种 宏定义 文件包含和条件编译 预处理命令不是C语句 不用加分号 1 宏定义 形式 define 宏名 替换文本 define 宏名 参数 替换
  • Python元组、列表、字典、字符串常用方法超详细总结!!!

    文章目录 1 列表 list 1 1 len 1 2 max 和min 1 3 reverse 1 4 sort 1 5 clear 1 6 remove 1 7 insert 和pop 2 元组 tuple 2 1 len 2 2 cou
  • test2这篇博客的目的是test我做的小程序,请勿打开

    这篇博客的目的是test我做的小程序 请勿打开
  • SpringBoot多数据源动态切换,不影响业务逻辑正常运行,服务高可用

    SpringBoot多数据源动态切换 不影响业务逻辑正常运行 服务高可用 本文使用Spring Boot 2 4 10版本和MyBatis实现多数据源动态切换 当主库MySQL宕机后自动切换到容灾PostgreSQL数据库 数据库及数据表示
  • Altium Designer -- EMC/EMI电路设计经验

    一 基本概念 参看 电磁兼容原理及应用 讲的相当的不错 随着科学技术的不断发展 各种电气和电子设备已广泛应用于国民经济的各个部门以及人们的日常生活中 电气和电子设备在正常运行的同时 也往外发射有用或无用的电磁能量 这些能量会影响其它设备的正
  • 【React】dva-cli建立脚手架后引用css 无效

    用dva cli作为脚手架建立工程后 开始尝试编写页面 然后立马发现一个坑爹的问题 在我less文件里面写了一个class 比如 MainHead 但是编译出来之后发现css文件里面变成了 MainHead xuaz 多了一个后缀 坑爹嘛这
  • JavaScript 预解析(面试经常问)

    文章目录 预解析 预解析 解析器运行 JS 分为哪两步 预解析 执行代码 预解析 js 引擎会把 js里面所有 var 还有 function 提前到当前作用域的最前面 执行代码 从上到下执行 预解析分为 变量预解析 变量提升 和函数预解析