1 var mult=(function(){
2 var cache={};
3 return function(){
4 var args=Array.prototype.join.call(arguments,",");
5 if(args in cache){
6 return cache[args];
7 }
8 var a=1;
9 for(var i=0,l=arguments.length;i<l;i++){
10 a=a*arguments[i];
11 }
12 return cache[args]=a;
13 }
14 })();
15 alert(mult(1,2,3));
16 alert(mult(2,3,4));
js代码执行顺序是怎么的?
上面的代码是不是从1--14行执行,然后走到15行调用的时候会重新执行一次1-14行,然后继续走到16行,16行再调用的时候又重新执行1-14行??
事实上,1-14行执行后返回3-13行的匿名函数并赋给mult,因此顺序是1-14-15-3-13-16-3-13