1 函数表达式
匿名函数/拉姆达函数:
var f = function() {};
函数表达式不具备函数声明的函数提升特性
2 递归
function f () {
// arguments的拥有者
arguments.callee();
}
var ff = (function f() {
f(); // f依然有效
});
3 闭包
闭包:有权访问另一个函数作用域中的变量的函数。
作用域链:在一个函数被创建的时候,它的执行环境与函数作用域链会同时被创建,作用域链是由里向外不断延伸的作用域,第一级为当前函数的作用域,第二级为包含该函数的函数的作用域,以此类推直到最外一层的全局作用域。
4 this对象
TODO
5 模仿块级作用域
(function(){
// 块级作用域
})();
6 私有变量
在某一作用域定义的一个变量,此时在另一作用域欲访问时,需要通过作用域中的用闭包实现的公有方法来访问该变量。