模板网站也需要服务器吗,怎样做app网站建设,商城网站开发业务,企业网站优化价格什么是预编译#xff1f;当js代码执行时有三个步骤#xff1a;1.语法分析#xff0c;这个过程检查出基本的语法错误。2#xff0c;预编译#xff0c;为对象分配空间。3#xff0c;解释执行#xff0c;解释一行执行一行#xff0c;一旦出错立即停止执行。预编译发生在代…什么是预编译当js代码执行时有三个步骤1.语法分析这个过程检查出基本的语法错误。2预编译为对象分配空间。3解释执行解释一行执行一行一旦出错立即停止执行。预编译发生在代码执行的前一刻。预编译的具体过程预编的时候会生成AO (Activetion Object,执行期上下文)和GO (Global Object,等于window)【注1】先生成GO生成后会逐行执行代码遇到某个函数要执行时在执行前的前一刻会预编译这个函数生成AO换言之AO用于全局中的某个具体函数而GO用于整个全局详情请看下面例子运行结果如下GO创建过程1.首先创建GO对象。GO{}2.在全局中寻找变量声明作为GO的属性并将undefined赋给它。GO{bundefined}3.在全局中寻找函数声明(【注2】注意不是变量赋值)作为GO属性并将函数体赋值于它。GO{b:function{...};(此时第二步中的b已被覆盖成为function b)}然后开始逐行执行代码遇到第一个console.log(b);打印的是GO中的bAO创建过程第一次打印完b后代码执行到 然后开始创建AO其创建过程和GO相似只是多了一步实参形参相统一而已。1.创建AO对象。AO{}2.在相应函数中寻找形参和变量声明作为执行期上下文的属性并将undefined赋给它们。AO{bundefined(这个b是变量b此函数没有形参)}3.实参形参相统一。4.寻找函数声明作为它的属性并将函数体赋给它。AO{bfunction{...};(函数b将变量b覆盖)}开始执行函数b第二个console.log(b)结果为function(){}执行AO中b的值被赋成10执行第三个console.log(b)结果为10.