关于js一个加法函数的应用

chinet_bridge 2015-08-28 12:16:57
        function add(a) {
return function (b) {
return function (c) {
return function (d) {
return a + b + c + d;
};
};
};
}

console.log(add(10)(11)(12)(14));


如果必须使用这种形式 add(10)(11)(12)(14) 来实现几个数字的求和。
那么除了开头的样例,还有没有其他函数体的写法?
...全文
233 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_24603759 2015-08-30
  • 打赏
  • 举报
回复
var add = function(a,b){ return a+b; } var c = [这里面是要加的数]; for(var i=0;i<c.length;i++){ if(isNaN(c[i])){ return false;//这里最好用监听器来判断是否存在不是数的字符。 } } Array.method("reduce",function(value,f){ for(var i=0;i<c.length;i++){ value=f(value,c[i]); } return value; }) 看到上面有很多人用arguments.其实我不推荐。类型数组有很多隐患,最好还是用原型方法,递归函数来解决
chinet_bridge 2015-08-30
  • 打赏
  • 举报
回复
shen332401890 和sp1234 大神的解答让我满意,谢谢诸位!
顾小林 2015-08-29
  • 打赏
  • 举报
回复
add(10)(11)(12)(14) 必须用这个格式,就表明,你add()返回的东西必须是你这个函数本身,你还要记住上一次的计数和 var result =0; function add(x){ result += x; return add; } 最后result就是你想要的,封装个类好了。 伪代码。
  • 打赏
  • 举报
回复
在 javascript 的设计中,类似“函数对象()”这种求值的约定非常普遍。所以你可以先约定好以后都用 console.log(add(10)(11)(12)(14)()); 这种形式的语法,而不是你那种。
  • 打赏
  • 举报
回复
没有什么好的办法。因为你的写法是需要确定地知道函数连缀个数的。 如果可以用一个 () 表示结束/求值,则可以这样写
            var f = function (a) {
                var sum = a;
                var y = function (x) {
                    if (x) {
                        sum += x;
                        return y;
                    }
                    else
                        return sum;
                };
                return y;
            };
            var t = f(10)(11)(12)(14)();
我叫小菜菜 2015-08-29
  • 打赏
  • 举报
回复
使用不固定多个参数是个好思路。 但更好的思路是使用一个json串作为参数,比如add({10,11,12,14}); 比如savePerson({"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}); 定义时,可以如下; f
unction(A){
 var a=A.firstName;
 var b=A.lastName;
var c="123";
if(A.email!=null){
  c=A.email;
}
...
}
调用时,直接
savePerson({"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"});
化繁为简2007 2015-08-28
  • 打赏
  • 举报
回复
顶2#!!!
天际的海浪 2015-08-28
  • 打赏
  • 举报
回复

function add() {
	var s = 0;
	for(var i = 0, len = arguments.length; i < len; i++){
		s += arguments[i];
	}
	return s;
}
console.log(add(10,11,12,14));
weixin_30788895 2015-08-28
  • 打赏
  • 举报
回复
手机不好打代码,可以这一个方法,不要参数,在放大体里判断arguments,如果他的length大于0就循环一个参数集合,并让他们相加,当然循环前先生命一个result=0,然后循环一次就加进去,如果参数为0,返回0,调用这个方法可以传任何个数的参数,祝你好运

87,888

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧