1、
注意这里用了一个“创建一个匿名函数并立刻执行”的语法:
(function (x) { return x * x; })(3); // 9
理论上讲,创建一个匿名函数并立刻执行可以这么写:
function (x) { return x * x } (3);
但是由于JavaScript语法解析的问题,会报SyntaxError错误,因此需要用括号把整个函数定义括起来:
(function (x) { return x * x }) (3);
通常,一个立即执行的匿名函数可以把函数体拆开,一般这么写:
(function (x) { return x * x; })(3);
2、
//inital 有值就是inital没值就是 0
var x = initial || 0;
3、
换句话说,闭包就是携带状态的函数,并且它的状态可以完全对外隐藏起来。