函数
function test(){
}
表达式
1.命名函数表达式
var test = function abc(){
document.write('a');
}
2.匿名函数表达式 ———— 函数表达式
var demo = function(){
document.write('b');
}
参数
不用声明参数类型
实参arguments
形参(函数名)
返回值return
作用域
全局变量
var a = 123;
局域变量
function test(){
var a = 10;
}
递归
function mul(n){
if(n == 1){
return 1;
}
return n * mul(n - 1);
}
注意:
1.找规律
2.找出口
预编译
预编译发生在函数执行的前一刻
函数声明整体提升
变量 声明提升
暗示全局变量imply global
即任何变量,如果变量未经声明就赋值,此变量就为全局对象所有
window是全局的域
一切声明的全局变量,全是window的属性
预编译分为四步:
1.创建AO(Activation Object)(执行期上下文)对象
2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
3.将实参值和形参统一
4.在函数体里面找函数声明,值赋予函数体
外部预编译时会生成一个GO(Global Object)对象
GO === window