商城网站建设公司哪家好,上海环球金融中心简介,淮安做网站的有多少,延庆网站建设javascript词法分析函数在运行的瞬间#xff0c;生成一个活动对象#xff08;Active Object#xff09;#xff0c;简称AO#xff1b;具体分为两个阶段#xff1a;一.分析阶段JavaScript代码运行前有一个类似编译的过程即词法分析#xff0c;词法分析主要有三个步骤生成一个活动对象Active Object简称AO 具体分为两个阶段 一.分析阶段 JavaScript代码运行前有一个类似编译的过程即词法分析词法分析主要有三个步骤 1.分析参数 2.分析变量声明 3.分析函数声明 二.执行阶段 即做赋值等操作 具体例子及简单分析步骤如下 *1.无参数情况* 1 function func() {
2 console.log(age);
3 var age 25;
4 console.log(age);
5 function age() {
6 }
7 console.log(age);
8 }
9 func(); 1.1详细分析步骤 // 分析阶段 形成活动对象AO, 假设 AO {}; 1分析参数 a.分析形参没有跳过 b.分析实参没有跳过 2分析变量声明 a. AO.age undefined;(在函数分析阶段默认往AO活动对象添加属性值为undefined); 3) 分析函数声明 a. AO.age function(){};(如果AO中已存在age属性直接做覆盖操作如果不存在则新建age属性进AO) // 执行阶段 1.打印 function() {}; 2.age赋值25 AO.age 25; 3.打印 25; 4.打印 25; **//以下例子同上类似步骤简写分析** *2.有参数情况* 1 function func(age) {
2 console.log(age);
3 var age 25;
4 console.log(age);
5 function age() {
6 }
7 console.log(age);
8 }
9 func(18); 2.1 // 分析阶段 1分析参数 a. AO.age undefined; b. AO.age 18; 2)分析变量声明 AO.age 18; (AO中已存在age属性) 3.分析函数声明 AO.age function() {}; //执行阶段 1.打印 function() {}; 2.赋值后打印 AO.age 25; 3.打印 25; *3.报错情况* 1 function func(age) {2 var age;3 console.log(age);4 var age 25;5 console.log(age);6 function age() {7 console.log(age);8 }9 age();
10 console.log(age);
11
12 }
13 func(18); 3.1 // 分析阶段 1.分析参数 a. AO.age undefined; b. AO.age 18; 2.分析变量声明 AO.age 18;(AO中已存在保持不变); 3.分析函数声明 AO.age function() {}; (存在age属性覆盖) //执行阶段 1.打印 function() {}; 2.赋值后打印 25; 3. age is not a function;(执行函数时AO的age已经为25) 4. 报错不执行; *4.变量提升情况* 1 var name test;
2 function t() {
3 console.log(name);
4 var name test1;
5 console.log(name);
6 }
7 t(); 类似写法 var name test; function t() { var name; console.log(name); name test1; console.log(name); } t(); 4.1 // 分析阶段 1.分析参数没有参数跳过 2.分析变量声明 AO.name undefined; 3.分析函数声明没有跳过 //执行阶段 1.打印 undefined; 2.赋值后打印 test1; 注 1.函数声明在分析阶段操作 2.函数表达式在执行阶段操作 转载于:https://www.cnblogs.com/jiaqi1719/p/10019689.html