网上有很多关于sum(1)(2)(3),sum(1,2,3)之类的面试题要求输出相同的结果6并要求可以满足扩展,即有多个参数时也能符合题设的要求,所以自己写了部分例子可以大概满足这些面试题的要求

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
//案例1
    //sum(2,3)和sum(2)(3)均能输出outPut5,这个问题较为简单,只要返回一个函数即可,本例中使用了es6语法
// function sum(x=0,y){
// if([...arguments][1]==undefined){
// let befor = [...arguments][0];
// return function suum(afte){
// let sum2 = befor+afte;
// console.log(`outPut${sum2}`);
// }
// }
// else{
// let sum1 = x+y;
// console.log(`outPut${sum1}`);
// }
// }
//
// sum(2,3); 输出outPut5
// sum(2)(3);输出outPut5

//案例二、add(2,3,4...)和add(2)(3)(4)...都输出相同结果的解决方案

// function add(x) {
// var sum = x;
// var tmp = function (y) {
// sum = sum + y;
// return tmp;
// };
// tmp.toString = function () {
// return sum;
// };
// return tmp;
// }
// console.log(add(1)(2)(3)); //6
// console.log(add(1)(2)(3)(4)); //10
// console.log(add(1)(2)(3)(4)(5));//15
// console.log(add(1)(2)(3)(4)(5)(6));//21

//扩展案例3、此函数使用es6实现输入sum(),sum(2,3,4...)多个值相加,还有sum(2)(3)(4)...等多个数值分别相加的值相等,此案例也是最完整的解决方案
function sum(...args){
if([...args].length==1){
let sum2 = [...args][0];
var suum = function (y){
sum2 +=y;
console.log(`output ${sum2}`)
return suum;
}
suum.valueOf = function(){
return sum2;
}
return suum;
}
else{
let sum1 = 0;
for(var i = 0;i<[...args].length;i++){
sum1 += [...args][i];
}
console.log(`outPut1 ${sum1}`);
}
}
sum(); //outPut1 0
sum(2,3,4);//outPut1 9
sum(2)(3)(4)(5);//outPut1 5//outPut1 9//outPut1 14
//每加一次就会输出一次Sum。如果不想输出三次则可以在函数中加一个valueOf方法或者toString方法。然后将Summ函数中的console去掉。
//然后console.log(sum(2)(3)(4)(5));即可

//感兴趣的朋友可以直接复制粘贴看效果即可
</script>
</body>
</html>

js中sum(2,3,4)和sum(2)(3)(4)都返回9并要求扩展性的更多相关文章

  1. 使用call、apply和bind解决js中烦人的this,事件绑定时的this和传参问题

    1.什么是this 在JavaScript中this可以是全局对象.当前对象或者任意对象,这完全取决于函数的调用方式,this 绑定的对象即函数执行的上下文环境(context). 为了帮助理解,让我 ...

  2. JS中的this、apply、call、bind(经典面试题)

    1.什么是this 在JavaScript中this可以是全局对象.当前对象或者任意对象,这完全取决于函数的调用方式,this 绑定的对象即函数执行的上下文环境(context). 为了帮助理解,让我 ...

  3. 转js中this指向的简明解答

    JS中的this对象详解   JS中this关键字很常见,但是它似乎变幻莫测,让人抓狂.这篇文章就来揭示其中的奥秘. 借助阮一峰老师的话:它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用. ...

  4. JS中的this对象详解

    JS中this关键字很常见,但是它似乎变幻莫测,让人抓狂.这篇文章就来揭示其中的奥秘. 借助阮一峰老师的话:它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.这句话看似平常,可是要非常注意 ...

  5. javascript (js)中的基本概念

    1. 基本数据类型 1.1 number (数字)在js中没有整形和浮点型的区分,所有的数字都是浮点型标识, 采用64位的浮点格式来表示数字.如果数字类型用在字符串连接表达式中,则会自动转换成字符串, ...

  6. js中的运算符和条件语句

    js中的运算符大体上可以分为4类:1算术运算符.2一元操作符.3比较运算符.4逻辑运算符. 算术运算符一般指的是加减乘除求余这五种操作符:+,-,*,/,%.通过算术运算符可以对js中的变量进行操作. ...

  7. js中的this指向问题(小计)

    this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定,this最终指向调用它的对象. 1.函数调用模式 当一个函数并非一个对象的属性时,那么它就是被当做函数来调用的.在此种模式下,t ...

  8. Javascript高级编程学习笔记(3)—— JS中的数据类型(1)

    前一段时间由于事情比较多,所以笔记耽搁了一段时间,从这一篇开始我会尽快写完这个系列. 文章中有什么不足之处,还望各位大佬指出. JS中的数据类型 上一篇中我写了有关JS引入的Script标签相关的东西 ...

  9. js中函数传参的情况

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

随机推荐

  1. Git 忽略提交 .gitignore

    在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交. Git 忽略文件提交的方法 有三种方法可以实现忽略Gi ...

  2. JXLS 2.4.0系列教程(六)番外篇——导出图片(完结)

    突然想起来有同学说过能不能导出图片,本来我是想说不懂的,后来我上官网查了查,还挺容易.我就简短的写一写怎么导出图片. 官方提供了导出图片标签: jx:image(lastCell="D10& ...

  3. [国嵌攻略][174][CGI快速入门-网页控制LED]

    CGI程序(Common Gate Way Interface) 在服务器外部供服务器调用的程序,CGI程序与服务器配合后能让服务器完成更强大的功能. 1.浏览器通过HTML表单或超链接请求指向一个C ...

  4. PHP安全之webshell和后门检测

    基于PHP的应用面临着各种各样的攻击: XSS:对PHP的Web应用而言,跨站脚本是一个易受攻击的点.攻击者可以利用它盗取用户信息.你可以配置Apache,或是写更安全的PHP代码(验证所有用户输入) ...

  5. 版本控制——TortoiseSVN (1)安装与配置

    =================================版权声明================================= 版权声明:原创文章 禁止转载  请通过右侧公告中的“联系邮 ...

  6. java 三大框架

    SSH即:Spring.Struts.HibernateSpring:功能强大的组件粘合济,能够将你的所有的java功能模块用配置文件的方式组合起来(还让你感觉不到spring的存在)成为一个完成的应 ...

  7. CentOS 7安装Oracle 11gR2以及设置自启动

    一.环境准备 1.正确无误的CentOS 7系统环境 CentOS 7安装:http://www.cnblogs.com/VoiceOfDreams/p/8043958.html 2.正确的JDK环境 ...

  8. 记录linux tty的一次软锁排查2

    在复现tty的死锁问题的时候,文洋兄使用了如下的方式: #include <fcntl.h> #include <unistd.h> #include <stdio.h& ...

  9. idea 远程调试 tomcat web应用

    最近在做的一个东西,测试环境和本地环境差距太大,本地能运行的代码,放到测试环境上到处报错,哪里哪里都连不上,所以决定把代码部署到远程服务器上调试,节省时间. 网上看了很多教程,大部分都是互相抄来抄去, ...

  10. [转]如何使用PHP实现javascript的escape和unescape函数

    前端开发工程师都知道javascript有编码函数escape()和对应的解码函数unescape(),而php中只有个urlencode和urldecode,这个编码和解码函数对encodeURI和 ...