预编译,(函数表达式&函数声明),typeof

  • Post author:
  • Post category:其他




JS运行三部曲

  • 语法分析
  • 预编译
  • 解释执行


函数声明整体提升

变量 声明提升


在这里插入图片描述



预编译前奏

在这里插入图片描述

在这里插入图片描述



预编译

  1. 创建AO对象
  2. 找形参和变量声明(包括if语句里面的变量声明),将变量和形参名作为AO属性名,值为undefined
  3. 将实参值和形参统一
  4. 在函数体里面找函数声明,值赋予函数体

步骤过程如下:

在这里插入图片描述

3.

在这里插入图片描述

4.



执行

在这里插入图片描述

在这里插入图片描述

补充:

函数表达式: var a=function(){}

函数声明(提升): function a(){}

在这里插入图片描述


预编译不仅仅发生在函数体 还发生在全局


全局:



1.生成了GO对象 GO{}


2.无形参;

仅变量声明 undefined


X 3.无形参实参统一


4.函数声明并赋予函数体

GO === window

在这里插入图片描述

例A:

在这里插入图片描述

在这里插入图片描述

执行

在这里插入图片描述

例B:

在这里插入图片描述

例C:

在这里插入图片描述

在这里插入图片描述

提升例D:

在这里插入图片描述

提升例E:

在这里插入图片描述



补充 typeof

只有一种情况(typeof)未定义下不报错,返回undefined

在这里插入图片描述

例:

在这里插入图片描述



版权声明:本文为weixin_45179978原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。