浏览网页时,突然看到这样一道题,实现add(1)(2)(3)(4)=10这样的效果。

一般来说 fn()()这样的格式是会报错的,要想这个函数能执行 add()(),可以很快的想到当add()返回一个函数时,可以达到这样的效果。

1 function add(){
2
3     function temp(){}
4
5     return temp;
6 }    

View Code

然后返回tmp保证了第二次调用的是tmp函数,后面的计算都是在调用tmp, 因为tmp也是返回的自己,保证了第二次之后的调用也是调用tmp,而在tmp中将传入的参数与保存在作用链中x相加并付给sum,这样就保证了计算;

 1  function add(x){
 2             var sum=x;
 3             function temp(y){
 4                 console.log("y:"+y);
 5                 sum+=y;
 6                 console.log(sum)
 7
 8             }
 9             return temp;
10         }

View Code

这样返回temp的话就不能够获取到sum的数值了,而我们又知道,当打印时,会调用他的tostring或valueof 方法  ,因此我们可以自己改写它的tostring方法,从而获得sum值

 1 function add(x){
 2             var sum=x;
 3             function temp(y){
 4                 console.log("y:"+y);
 5                 sum+=y;
 6                 return temp;
 7             }
 8             temp.toString=function(){
 9                 return sum;
10             }
11             return temp;
12         }

View Code

这时候就可以实现add()()()这样不限制参数个数的效果了,如果想实现add()不定项参数的话,可以考虑用arguments计算出add()的值  再计算后面括号的值

转载于:https://www.cnblogs.com/xiaofuxuan-blogs/p/9061151.html

实现类似add(1)(2)(3)的效果相关推荐

  1. 微信小程序手把手教你实现类似Android中ViewPager控件效果

    微信小程序手把手教你实现类似Android中ViewPager控件效果 前言 需求分析 头部TAB 滑动的内容部分 最终版本 尾巴 前言 在做Android开发的时候,ViewPager是开发者使用频 ...

  2. rust 使用tokio的Notify 和timeout实现类似可超时条件变量的效果

    Notify配合timeout,在异步编程中实现类似可超时条件变量的效果.代码很简单,如下: use std::{sync::Arc, time::Duration};use tokio::{sync ...

  3. c语言微信小程序编程,微信小程序实现类似微信点击语音播放效果

    本文实例为大家分享了微信小程序类似平常微信语音聊天的效果,不会互相干扰播放状态,供大家参考,具体内容如下 根据开发的需求,先理清一下思路,点击语音播放与暂停/停止,切换下一个语音等: 小程序对于aud ...

  4. 微信小程序,类似微信点击语音播放效果,不会互相干扰播放状态

    类似平常微信语音聊天的效果- 根据开发的需求,先理清一下思路,点击语音播放与暂停/停止,切换下一个语音等: 小程序对于audio的组件的一些api方法已经不支持了,详情可以参看:微信小程序audio组 ...

  5. 一个类似抖音 APP 拍摄按钮效果的控件

    TouchButton 一个类似抖音 APP 拍摄按钮效果的控件 效果图预览 用法 <net.angrycode.library.TouchButtonandroid:id="@+id ...

  6. Android 贝塞尔曲线——类似QQ红点拖拽效果

    在Android绘制中,提供了更为丰富绘制api--Path类,包括直线,二阶贝塞尔曲线,三阶贝塞尔曲线,弧形,圆,椭圆,圆角矩形等等,path的绘制最终是调用了C中的绘制方法. 下面来看一下常用的几 ...

  7. Java choose函数_BI小课堂:如何在报表中实现类似条件格式化的数据可视化效果...

    大家对Excel中的条件格式化功能都很熟悉,借助这个功能可以在某一列中,直观的展示不同数据行中的数据特征.那么如何使用Wyn Enterprise,在报表中制作出类似条件格式化的数据可视化效果呢? ( ...

  8. 用原生JavaScript写出类似jQuery中slideUp和slideDown效果

    JavaScript是本人自学的第一门语言,也是本人目前最喜欢的一门语言.由于是自学,加上没有做过任何项目(只是偶尔自己做一些小效果玩玩),所以水平不咋地,写得不好之处,欢迎各位指正. 前言 在我自学 ...

  9. Qt+html+JavaScript实现类似QQ聊天界面的气泡效果

    这是一个简单的类似QQ聊天界面的Demo,用Qt实现,在QWebView里嵌入网页的方式实现.先看效果图: 无论怎样,我觉得自己动手写出来的东西才是自己的,所以源码不全,重点的代码我会放上来.只是模拟 ...

最新文章

  1. 能源枯竭?在能源互联网时代不存在!
  2. Antd Vue range-picker 日期初始值设置 与 重置日期踩坑总结
  3. 设计模式(五)责任链模式
  4. python一千行入门代码-Python 有哪些一千行左右的经典练手项目?
  5. HighNewTech:LL / GCP BOOTH at CES 2019 - January 8-11, 2019 - Westgate Convention Center Las Vegas
  6. LVS峰会 | 阿里云李刚:下一代低延时的直播CDN
  7. 安装ie9提示未能完成安装_IE9浏览器无法安装怎么办?如何解决?
  8. springmvc+jpa实现分页的两种方式
  9. 简单英文题 16 Maximum Sum Not Exceeding K(python)
  10. VS2012无法打开文件“kernel32.lib”问题的解决办法
  11. npm下载require
  12. 利用winrar安全加密
  13. sql安装过程中,为 SQL Server 代理服务提供的凭据无效。若要继续操作,请为 SQL
  14. 数据库名、实例名、数据库域名、全局数据库名、服务名 ,
  15. 【0723】自动化运维——saltstack
  16. 做phodal的御用编辑,其实我是拒绝的
  17. MediaPlayer源码分析
  18. 面试中关于MySQL十连问
  19. Python正则匹配的应用——替换括号及括号内字符、文本分句
  20. u盘推荐知乎_U盘推荐|U盘哪个牌子更好?怎么选择?

热门文章

  1. [置顶] 从零开始学C++之STL(二):实现简单容器模板类Vec(vector capacity 增长问题、allocator 内存分配器)...
  2. 能搜python题的软件_中国大学MOOC的APP用Python玩转数据期末考试搜题公众号答案...
  3. 继续跟上--“永远不要对一个外行聊你的专业”
  4. Java基础----泛型
  5. php 有趣的php 封装,封装PHP常用的操作类
  6. 发布文章自动上传图片并生成水印
  7. Java——JVM基本原理
  8. golang orm对比
  9. 2018年流行的vue前端UI框架
  10. java.util.enummap_java.util.EnumMap.clone()方法实例