使用闭包的方式实现一个累加函数 addNum,参数为 number 类型,每次返回的结果 = 上一次计算的值 传入的值,如: addNum(10); //10 addNum(12); //22 addNum(30); //52
写法一
1 function sum(numberOne) {
2 var count = numberOne;
3 return function by(numberTwo) {
4 if (numberTwo === undefined) {
5 return count;
6 } else {
7 count = numberTwo;
8 return by;
9 }
10 }
11 }
12 console.log(sum(10)(12)(30)());
写法二
1 function sum(x) {
2 var result = 0;
3 for(var i=0;i<arguments.length;i ){
4 result = arguments[i];
5 }
6 var foo = function(){
7 for(var i=0;i<arguments.length;i ){
8 result = arguments[i];
9 }
10 return foo;
11 };
12 foo.toString = function(){
13 return result;
14 };
15 return foo;
16 }
17
18 console.log( sum(10)(12)(30));
写法三
1 function sum (n) {
2
3 var v = function (x) {
4 return sum (n x);
5 };
6
7 v.valueOf = v.toString = function () {
8 return n;
9 };
10
11 return v;
12 }
13
14 console.log( sum(10)(12)(30));
更多专业前端知识,请上 【猿2048】www.mk2048.com