创建函数的方法:
-函数声明:函数声明提升,在执行代码之前会先读取函数声明
-函数表达式:
递归:
- 递归函数是在一个函数通过名字调用自身的情况下构成的;
- argument.callee属性:是指向正在执行的函数的指针;
- 命名函数表达式:
var factorial = (function f(num){
if (num <= 1){
return 1;
}else {
return num * f(num - 1);
});
闭包:
- 闭包是指有权访问另一个函数作用域中的变量的函数;
- 创建闭包:在一个函数内部创建另一个函数;
- 当某个函数被调用时,会自动获得两个特殊变量:this和argument,会创建一个执行环境以及相应的作用域链,然后使用argument和其他命名参数的值来初始化函数的活动对象;
- 作用域链本质上是一个指向变量对象的指针列表(引用)
- this对象:匿名函数的执行环境具有全局性
私有变量:任何函数中定义的变量,都可以认为是私有变量
- 包括函数的参数,局部变量和在函数内部定义的其他函数;
- 把有权访问私有变量和私有函数的公有方法叫做特权方法;