小弟正在拜读,Crockford大人的JS精粹一书,因为本人菜鸟一枚,对于递归和闭包的部分非常迷茫,递归现在好歹理解一些了,但闭包实在无力,现在挑一些不明白的,拿上来问问,下面这段的代码,我重点有两个问题,第一个是第6行的那个逗号,这个是什么意思,return里面两个函数用逗号隔开的话,是顺序执行的意思吗?然后是最后一行的结尾处的(),这个我的理解是执行函数,并把返回值付给myObject,如果我的理解队的话,是不是说,去掉这个(),这段函数的意思是把整个大的function赋给myObject?如果这样的话,是不是想用获得这个函数返回值的时候,可以这样子:var curObjectValue = myObject()?不知道我这么表述问题,是否清晰?先问这个,我一边看书一边问,从昨天看是看这部分,总共也就10页左右,实在吃不透,没办法只能来求助了,谢谢,谢谢~
var myObject = function (){
var value = 0;
return {
increment: function (inc){
value += typeof inc === 'number' ? inc : 1;
},
getValue: function (){
return value;
}
};
}();
var myObject = function (){
var value = 0;
return {
increment: function (inc){
value += typeof inc === 'number' ? inc : 1;
},
getValue: function (){
return value;
}
};
}();
其次,我来回答你的问题1、这个函数return的不是执行什么,而是一个对象。这个是个匿名对象(借词)。也就是说返回值是
{
increment: function (inc){
value += typeof inc === 'number' ? inc : 1;
},
getValue: function (){
return value;
}
}
这个时候myObject就是这个对象的名字了,他拥有了increment和getValue两个方法了。
2、你理解的对,这是自执行函数。剩下的你的理解没什么问题~
var myObject = {
increment: function (inc){
value += typeof inc === 'number' ? inc : 1;
},
getValue: function (){
return value;
}
};