使用闭包的方式实现一个累加函数 addNum
使用闭包的方式实现一个累加函数 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));