标签:
今天碰到了一个题目,哎哟我的哥真是阴吹时听,同时这个题目告诉了我们一些关于JavaScript函数非常一颗赛艇的事
题目
创建一个计算两个参数之和的 function。如果只有一个参数,则返回一个 function,该 function 请求一个参数然后返回求和的结果。
例如,add(2, 3)
应该返回 5
,而 add(2)
应该返回一个 function。
调用这个有一个参数的返回的 function,返回求和的结果:
var sumTwoAnd = add(2);
sumTwoAnd(3)
返回 5
。
如果两个参数都不是有效的数字,则返回 undefined。
一脸懵逼是不是?先让我们看一下测试用例:
add(2, 3)
应该返回 5。add(2)(3)
应该返回 5。add("http://bit.ly/IqT6zt")
应该返回 undefined。add(2, "3")
应该返回 undefined。add(2)([3])
应该返回 undefined。 if (arguments.length === 1 && typeof arguments[0] === ‘number‘) {
//一个 }else if (typeof arguments[0] === ‘number‘ && typeof arguments[1] === ‘number‘) {
//两个 }
if (arguments.length === 1 && typeof arguments[0] === ‘number‘) { var x = arguments[0]; return function(y) { if (typeof y === ‘number‘) { return x + y; } }; }
传入两个参数的业务逻辑更是简单,只要判断两个参数均为数字类型然后将他们相加即可:
if (typeof arguments[0] === ‘number‘ && typeof arguments[1] === ‘number‘) { return arguments[0] + arguments[1]; }
如果不为数字类型的直接跳过让原变量保持undefined就好。
1 function add() { 2 if (arguments.length === 1 && typeof arguments[0] === ‘number‘) { 3 var x = arguments[0]; 4 return function(y) { 5 if (typeof y === ‘number‘) return x + y; 6 }; 7 } else if (typeof arguments[0] === ‘number‘ && typeof arguments[1] === ‘number‘) 8 return arguments[0] + arguments[1]; 9 }
标签:
原文地址:http://www.cnblogs.com/XhhDream/p/5855009.html