sum(1),sum(2,3,4),sum(2)(3)(4)

2023-10-30

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title></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 () {
        suum.toString = function () {
          return sum2;
        }
        return suum;
      } else {
        let sum1 = 0;
        for (var i = 0; i < [...args].length; i++) {
          sum1 += [...args][i];
        }
        return sum1
      }
    }
    //sum(1); //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));即可
    console.log(sum(2)(3)(4)(5))
    console.log(sum(2))
  </script>
</body>
</html>

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sum(1),sum(2,3,4),sum(2)(3)(4) 的相关文章

  • JDBC基础

    1 JDBC概述 在开发中我们使用的是java语言 那么势必要通过java语言操作数据库中的数据 1 1 JDBC概念 JDBC 就是使用Java语言操作关系型数据库的一套API 全称 Java DataBase Connectivity
  • 踏浪点神:新手该如何避免频繁重仓交易?

    期货市场中最忌讳的就是让情绪影响交易 但很多人却又很难避免这一点 其中表现最为突出的就是频繁操作了 自信地以为 多劳多得 近乎疯狂地买卖 满脑子的愤怒都急切地想要通过 自杀 的方式得以宣泄 这就是所谓的 交易失控 大多数人在事后冷静下来了都

随机推荐

  • K8S内容分发网络之集群,nginx,负载均衡,防火墙

    目录 第一章 实验架构需求 第二章 实验环境准备 2 1 节点准备 2 2 环境准备 2 3 在master node01 node02上操作安装docker 2 4 所有节点安装kubeadm kubelet和kubectl 2 5 部署
  • 使用dplyr包中的rename函数重命名R语言数据框中的指定列

    使用dplyr包中的rename函数重命名R语言数据框中的指定列 在R语言中 dplyr包提供了一组功能强大且易于使用的函数 用于对数据进行操作和转换 其中 rename函数可以用于重命名数据框中的指定列 本文将介绍如何使用dplyr包中的
  • DVWA(七) - 使用python脚本实现SQL盲注

    SQL Injection Blind sql盲注其实就是sql注入的一种 但是不会根据sql注入的攻击语句返回你想要知道的信息 盲注分为两种 布尔盲注以及时间盲注 布尔盲注 根据你的注入信息返回True和Fales 而返回的True和Fa
  • 【Java入门学习笔记】——第六天 import语句,类的访问控制权限问题,对象数组

    Q 怎样使用import语句 A import语句的作用如下 1 引入类库中的类 2 引入自定义包中的类 需要把程序使用的自定义的包名所形成的目录都放在同一文件夹中 Example01 所有包名形成的目录都要放在Example01中 stu
  • 职业素质学习心得

    名言 1 古之立大事者 不惟有超世之才 必有坚韧不拔之志 2 摒弃侥幸之念 必取百炼成刚 厚积分秒之功 始得一鸣惊人 一 心态决定一切 如果你有一个梦想 维护她 坚守她 实现她 企业招聘看重两个方面 心态 积极 能力 强大 公司待遇衡量标准
  • iOS反编译修改ipa的启动图

    启动图制作脚本点击此获取 步骤一 先创建一个iOS项目 并制作启动图 点击获取教程链接 步骤二 运行上述创建的项目 将会在Products目录得到一个xx app 右键选择 Show in Finder 再右键选择 显示包内容 取出Laun
  • C++11 之列表初始化

    在 c 98 03 中的对象初始化方法有很多种 请看下面的代码 初始化列表 int i arr 3 1 2 3 普通数组 struct A int x struct B int i int j b a 1 2 3 POD 类型即 plain
  • Memcache介绍及安装部署

    Memcache 官网 http memcached org 1 Memcache 的特性 1 可以通过做集群同步的方式 让各 memcache 服务器的数据进行同步 从而实现数据的一致性 2 memcached使用libevent库 能在
  • 国庆7天没休息,我用17张图画明白了SpringCloudAlibaba

    大家好 今天给大家介绍一个非常热门的技术 同时也是面试的时候面试官特别喜欢问的一个话题 那就是 SpringCloudAlibaba 的底层原理 现在大家都知道 SpringCloudAlibaba 风靡 Java 开发行业 各个公司都在用
  • pycharm导入第三方库

    第一步 点击文件按钮 第二步 点击设置 第三步 选择项目 python解释器 第四步 点击右侧栏的 第五步 输入要导入的库 进行搜索 第六步 点击安装包 等待安装完成即可
  • 基于springboot+vue的开源mes系统

    真正的大师 永远都怀着一颗学徒的心 一 项目简介 基于springboot vue的开源mes系统 二 实现功能 常规管理 现场数据采集 系统管理 菜单管理 用户管理 日志管理 角色管理 基础数据配置平台 基础数据维护 物料管理 物料台账
  • 程序员常去的个顶级开发社区

    程序员常去的个顶级开发社区 Stack Overflow 9月份 Stack Overflow也将迎来其6岁的生日 毫无疑问 Stack Overflow是全球最受程序员欢迎的开发社区 而且也是内容最丰富的社区之一 官方网站 http st
  • checkpatch海思SDK代码遇见的常见错误《一》

    01 WARNING AVOID EXTERNS externs should be avoided in c files 3 FILE sample region sample region c 3 extern C ifdef cplu
  • C++面试题分享

    在牛客网偶然间翻到的一个大佬总结的有关C 面试题的一个专栏 该专刊囊括了C语言 C 操作系统 计算机网络 嵌入式 算法与数据结构 数据库等一系列知识点 总结出了高频面试考点 附有答案 共计273道 在这里给大家分享一下 链接 蒋豆芽面试题专
  • gitlab--基础--5.4--CICD--variables

    gitlab 基础 5 4 CICD variables 1 variables的保留字 1 1 CI 标识该job是在CI环境中执行 1 2 CI COMMIT REF NAME 用于构建项目的分支或tag 的名称 1 3 CI COMM
  • Could not find a package configuration file provided by "ignition-transport1"

    一 错误 按照Gazebo官网教程进行code introspection环境配置 在对代码进行编译时报错如下 二 错误原因 cmakelists txt里设置的ignition transport版本为ignition transport
  • 解决方案:fatal error: openssl/bio.h: 没有那个文件或目录

    出现报错如下 出现该错误的原因有两个 没有安装openssl或者libssl dev库 Libssl dev版本过高 需要降级 一 没有安装openssl或者libssl dev库 使用指令安装openssl 我的是已经安装完成了 所以再把
  • catch抛出异常finally还执行吗

    在面试的时候 经常会问到一些很基础的知识 比如有没接触过try catch finally 他们的执行顺序是怎么样的呢 你对此嗤之以鼻 这不是很简单吗 按照顺序执就行了 没错 可是如果每一块有return 并且有抛异常 扑捉异常的情况呢 估
  • 三步搞定ABAP DOI操作EXCEL

    前言 ABAP可以使用OLE与DOI两种方式实现操作EXCEL 使用OLE时 每个单元格的值和样式都需要写代码实现 特别是对于不规则的格式 代码量巨大 而DOI是从服务器已经上传的EXCEL模板中下载模板然后打开修改实现数据保存 当然 也可
  • sum(1),sum(2,3,4),sum(2)(3)(4)