你了解JS执行过程吗?
- 进入执行上下文
- 执行代码
- 变量声明
- 函数声明(这个地方需要和函数表达式作区分)
- 函数参数
- 函数参数:VO的一个属性,这个属性是有形参名称和值组成,如果没有传递实参,那就是形参的名称和undefined。
- 函数声明:是由函数的名称和值组成,如果VO中存在该属性值,则替换这个属性。
- 变量声明:由变量名称和undefined组成,如果变量名和VO有的函数参数或函数声明相同,则变量声明不会干扰已存在属性。
1
2
3
4
5
6
7 |
function
test(a, b) { var
c = 20; function
d(){} var
e = function
_e(){}; ( function
x(){}); } test(30); |
1
2
3
4
5
6
7 |
VO (test FunctionContext) = { a: 30, b: undefined, d: <reference to FunctionDeclaration "d" >, c: undeifined, e: undefined } |
1
2 |
VO[ ‘c‘ ] = 20; VO[ ‘e‘ ] = <reference to FunctionDeclaration "_e" >; |
1
2
3
4
5 |
alert(x); //function var
x = 10; x = 20; function
x() {} alert(x); //20 |
1
2
3 |
VO = {} VO[ ‘x‘ ] = <reference to FunctionDeclaration "x" >; VO[ ‘x‘ ] = <the value is not disturbed, still function > |
1
2 |
V[ ‘x‘ ] = 10; V[ ‘x‘ ] = 20; |
1
2
3
4
5
6
7
8 |
function
test(a, b) { var
c = 20; console.log(a); //结果是什么?为什么? function
a(){} var
e = function
_e(){}; ( function
x(){}); } test(30); |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。