匿名函数(拉姆达函数)
匿名函数就是没有命名的函数,缺点是不会进行函数声明提升
。
也就是说如果使用匿名函数给赋值变量。必须在赋值后再执行,赋值前执行会报错。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| foo();
function foo() { console.log('foo'); }
foo();
bar();
var bar = function () { console.log('bar'); }
bar();
|
闭包
因为函数内 var
后变量作用域是函数内的。如果想在外部访问这个函数内的变量,就需要用到闭包。
创建闭包的常见方式,就是在一个函数内部套另一个函数。
闭包就类似面向对象里面的 稳妥构造函数模式。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13
| function girl() { var name = 'lily'; var age = 18;
function getName() { return name; } return getName; }
console.log(girl()); console.log(girl()());
|
闭包实现块级作用域
用一个立即执行的函数套一个匿名函数
1 2 3 4 5 6 7
| (function () { var i = 1; console.log(i); })();
console.log(i);
|