js的函数生命周期分为:创建和调用。
那么,创建时期如何理解。
我举出两个代码示例:
1.单层的函数
var x=10;
function f(){
alert(x);
}
2.函数嵌套
function f(){
var x=2;
function inner(){
return x;
};
return inner;
}
因为执行环境分为:进入执行上下文和执行代码阶段。
那么,对于第一个示例,函数f
的创建时期是什么时候?
第二个示例,inner
函数的创建时期是什么时候?
js中函数声明和函数表达式都可以定义函数。
函数声明属于VO对象,在进入上下文阶段创建
函数表达式不属于VO对象,在执行上下文阶段创建
函数表达式与函数声明(http://www.cn-cuckoo.com/main/wp-content/uploads/2009/12/named-function-expressions-demystified.html#expr-vs-decl)f
和inner
都是函数声明,在进入各自的上下文阶段创建
- 都是函数声明。
- 函数声明在预编译(执行代码前)阶段创建。
体会一下:
alert(typeof f)
function f(){}