JS运行三部曲
- 语法分析
- 预编译
- 解释执行
函数声明整体提升
变量 声明提升
预编译前奏
预编译
- 创建AO对象
- 找形参和变量声明(包括if语句里面的变量声明),将变量和形参名作为AO属性名,值为undefined
- 将实参值和形参统一
- 在函数体里面找函数声明,值赋予函数体
步骤过程如下:
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 版权协议,转载请附上原文出处链接和本声明。