js词法分析
2016-02-04 11:38
447 查看
/词法分析
1先分析参数
2在分析变量声明
3分析函数声明
一个函数能使用的局部变量就从上面的3步分析而来
具体步骤:
0:函数运行前的1瞬间,生成Active Object(活动对象),下称AO
1:把声明的参数形成Ao的属性,参数的值即属性的值;;接收参数,形成AO相应属性的值
2:分析变量声明,如var age;
如果Ao上还没有age属性,则添加age属性,值是undefined;
如果AO上已经有age属性,则不做任何处理
3 分析函数声明,如function foo(){};
则把函数赋给AO.foo()属性
注:如果此前foo属性已经存在,则被无情覆盖
/
function t(age){
alert(age);
}
t(5);//5
t();//undefined
/词法分析过程:
AO(age:undefined)
运行过程:
t(5) AO.age=5;alert(AO.age);//5
t() AO.age没有得到赋值,还是undefined/
function t2(){
var age=99;
alert(age);
}
t2(5);
/分析过程:
0:形成AO={};
1: 分析形参 AO={age:undefined;}
2:分析var age,发现AO已有age属性,不做任何影响
执行过程:
AO.age=99;
alert(AO.age);//99
/
function a(b){
alert(b);
function b(){
alert(b);
}
b();
}
a(1);
/分析过程
0:AO={};
1:分析参数AO={b:undefined;}
接收参数AO={b:1}
2:分析var声明,此函数没有var
3:分析函数声明,AO={b:function(){alert(b);}}
执行期
alert(b);//function
b();//由作用域寻找到a函数中的b,即function ,alert出来
/
function a(b){
alert(b);
b=function(){
alert(b);
}
b();
}
a(1);
1先分析参数
2在分析变量声明
3分析函数声明
一个函数能使用的局部变量就从上面的3步分析而来
具体步骤:
0:函数运行前的1瞬间,生成Active Object(活动对象),下称AO
1:把声明的参数形成Ao的属性,参数的值即属性的值;;接收参数,形成AO相应属性的值
2:分析变量声明,如var age;
如果Ao上还没有age属性,则添加age属性,值是undefined;
如果AO上已经有age属性,则不做任何处理
3 分析函数声明,如function foo(){};
则把函数赋给AO.foo()属性
注:如果此前foo属性已经存在,则被无情覆盖
/
function t(age){
alert(age);
}
t(5);//5
t();//undefined
/词法分析过程:
AO(age:undefined)
运行过程:
t(5) AO.age=5;alert(AO.age);//5
t() AO.age没有得到赋值,还是undefined/
function t2(){
var age=99;
alert(age);
}
t2(5);
/分析过程:
0:形成AO={};
1: 分析形参 AO={age:undefined;}
2:分析var age,发现AO已有age属性,不做任何影响
执行过程:
AO.age=99;
alert(AO.age);//99
/
function a(b){
alert(b);
function b(){
alert(b);
}
b();
}
a(1);
/分析过程
0:AO={};
1:分析参数AO={b:undefined;}
接收参数AO={b:1}
2:分析var声明,此函数没有var
3:分析函数声明,AO={b:function(){alert(b);}}
执行期
alert(b);//function
b();//由作用域寻找到a函数中的b,即function ,alert出来
/
function a(b){
alert(b);
b=function(){
alert(b);
}
b();
}
a(1);
相关文章推荐
- JavaScript类型、值和变量2
- 使用JSON进行数据传输的总结
- [LeetCode][JavaScript]Odd Even Linked List
- 为了提高性能,如何动态加载JS文件
- 关于javaScript中的“===”,"!=="和"==","!="
- AJAX 跨域请求 - JSONP获取JSON数据
- [LeetCode][JavaScript]Power of Three
- JavaScript DOM编程 学习笔记-全选(反选 全不选)
- JavaScript DOM编程 学习笔记-select级联选择
- JavaScript DOM编程 学习笔记-插入节点
- JavaScript DOM编程 学习笔记-删除节点
- JavaScript DOM编程 学习笔记-替换节点
- JavaScript DOM编程 学习笔记-创建并接入节点
- JavaScript DOM编程 学习笔记-节点属性
- JavaScript DOM编程 学习笔记-两个小示例
- JavaScript DOM编程 学习笔记-获取元素节点
- JavaScript DOM编程 学习笔记
- C# - JSON详解
- JavaScript中的Function
- [LeetCode][JavaScript]Longest Increasing Path in a Matrix