JavaScript预编译机制

news/2025/1/9 12:58:07/

变量预编译

  • 任何变量,如果未经声明就赋值,此变量是属于 window 的属性,而且不会做变量提升,无论在哪个作用域内赋值。比如说直接写 console.log(a)肯定会报错,提示找不到 a。但如果直接写 a = 100就不会报错,此时这个 a 就是 window.a。
  • 一切声明的全局变量(即在全局作用域内声明的var),全是window的属性

函数预编译步骤

  1. 创建AO对象。AO即 Activation Object 活跃对象,其实就是「执行期上下文」。
  2. 找形参和变量声明,将形参名和变量作为 AO 的属性名,值为undefined。
  3. 将实参值和形参统一,实参的值赋给形参。
  4. 查找函数声明,函数名作为 AO 对象的属性名,值为整个函数体。

http://www.ppmy.cn/news/1028925.html

相关文章

C++红黑树

一、红黑树的概念 红黑树是一种二叉搜索树,在其每个节点上增加一个存储位用于表示节点的颜色,可以是Red或Black 通过对任何一条从根到叶子的路径上的各个节点着色方式的限制,红黑树确保没有一条路径比其他路径长两倍 红黑树的性质&#xff…

大厂程序员使用Redis案例之连续签到

Redis简介 Redis(全称为Remote Dictionary Server)是一个开源的高性能键值对存储系统,具有快速、灵活和可扩展的特性。它是一个基于内存的数据结构存储系统,可以用作数据库、缓存和消息代理。 Redis 支持多种数据结构&#xff0…

【并发编程】线程池多线程异步去分页调用其他服务接口获取海量数据

文章目录 场景:解决方案 场景: 前段时间在做一个数据同步工具,其中一个服务的任务是调用A服务的接口,将数据库中指定数据请求过来,交给kafka去判断哪些数据是需要新增,哪些数据是需要修改的。 刚开始的设…

LeetCode150道面试经典题-- 有效的字母异位词(简单)

1.题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 2.示例 s"adasd" t"daads" 返回true s"addad" t &q…

【java面向对象中static关键字】

提纲 static修饰成员变量static修饰成员变量的应用场景static修饰成员方法static修饰成员方法的应用场景static的注意事项static的应用知识:代码块static的应用知识:单例设计模式 static静态的意思,可以修饰成员变量,成员方法&a…

【数据结构】二叉树篇| 纲领思路02+刷题

博主简介:努力学习的22级计算机科学与技术本科生一枚🌸博主主页: 是瑶瑶子啦每日一言🌼: 所谓自由,不是随心所欲,而是自我主宰。——康德 目录 一、前言二、刷题1、翻转二叉树 2、二叉树的层序遍历✨3、 二…

掌握Python的X篇_38_类的常见特殊方法让对象更好看

python中所有的特殊类方法,都是为了让类或者说对象更加好用。 文章目录 1. 让对象更好看_Python类中的特殊方法 1. 让对象更好看_Python类中的特殊方法 我们之前实现的类,实例化对象,打印的结果可读性不好。 In [3]: class Dog:...: de…

前端杂项-个人总结八股文的背诵方案

个人总结八股文的背诵方案 URL到显示网页的过程 浏览器解析URL,获取协议,主机名,端口号,路径等信息,并通过DNS查询将主机名转换为对应的IP地址浏览器与服务器建立TCP,进行三次握手。浏览器向服务器发送HT…