实现类似add(1)(2)(3)的效果
浏览网页时,突然看到这样一道题,实现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)的效果相关推荐
- 微信小程序手把手教你实现类似Android中ViewPager控件效果
微信小程序手把手教你实现类似Android中ViewPager控件效果 前言 需求分析 头部TAB 滑动的内容部分 最终版本 尾巴 前言 在做Android开发的时候,ViewPager是开发者使用频 ...
- rust 使用tokio的Notify 和timeout实现类似可超时条件变量的效果
Notify配合timeout,在异步编程中实现类似可超时条件变量的效果.代码很简单,如下: use std::{sync::Arc, time::Duration};use tokio::{sync ...
- c语言微信小程序编程,微信小程序实现类似微信点击语音播放效果
本文实例为大家分享了微信小程序类似平常微信语音聊天的效果,不会互相干扰播放状态,供大家参考,具体内容如下 根据开发的需求,先理清一下思路,点击语音播放与暂停/停止,切换下一个语音等: 小程序对于aud ...
- 微信小程序,类似微信点击语音播放效果,不会互相干扰播放状态
类似平常微信语音聊天的效果- 根据开发的需求,先理清一下思路,点击语音播放与暂停/停止,切换下一个语音等: 小程序对于audio的组件的一些api方法已经不支持了,详情可以参看:微信小程序audio组 ...
- 一个类似抖音 APP 拍摄按钮效果的控件
TouchButton 一个类似抖音 APP 拍摄按钮效果的控件 效果图预览 用法 <net.angrycode.library.TouchButtonandroid:id="@+id ...
- Android 贝塞尔曲线——类似QQ红点拖拽效果
在Android绘制中,提供了更为丰富绘制api--Path类,包括直线,二阶贝塞尔曲线,三阶贝塞尔曲线,弧形,圆,椭圆,圆角矩形等等,path的绘制最终是调用了C中的绘制方法. 下面来看一下常用的几 ...
- Java choose函数_BI小课堂:如何在报表中实现类似条件格式化的数据可视化效果...
大家对Excel中的条件格式化功能都很熟悉,借助这个功能可以在某一列中,直观的展示不同数据行中的数据特征.那么如何使用Wyn Enterprise,在报表中制作出类似条件格式化的数据可视化效果呢? ( ...
- 用原生JavaScript写出类似jQuery中slideUp和slideDown效果
JavaScript是本人自学的第一门语言,也是本人目前最喜欢的一门语言.由于是自学,加上没有做过任何项目(只是偶尔自己做一些小效果玩玩),所以水平不咋地,写得不好之处,欢迎各位指正. 前言 在我自学 ...
- Qt+html+JavaScript实现类似QQ聊天界面的气泡效果
这是一个简单的类似QQ聊天界面的Demo,用Qt实现,在QWebView里嵌入网页的方式实现.先看效果图: 无论怎样,我觉得自己动手写出来的东西才是自己的,所以源码不全,重点的代码我会放上来.只是模拟 ...
最新文章
- 能源枯竭?在能源互联网时代不存在!
- Antd Vue range-picker 日期初始值设置 与 重置日期踩坑总结
- 设计模式(五)责任链模式
- python一千行入门代码-Python 有哪些一千行左右的经典练手项目?
- HighNewTech:LL / GCP BOOTH at CES 2019 - January 8-11, 2019 - Westgate Convention Center Las Vegas
- LVS峰会 | 阿里云李刚:下一代低延时的直播CDN
- 安装ie9提示未能完成安装_IE9浏览器无法安装怎么办?如何解决?
- springmvc+jpa实现分页的两种方式
- 简单英文题 16 Maximum Sum Not Exceeding K(python)
- VS2012无法打开文件“kernel32.lib”问题的解决办法
- npm下载require
- 利用winrar安全加密
- sql安装过程中,为 SQL Server 代理服务提供的凭据无效。若要继续操作,请为 SQL
- 数据库名、实例名、数据库域名、全局数据库名、服务名 ,
- 【0723】自动化运维——saltstack
- 做phodal的御用编辑,其实我是拒绝的
- MediaPlayer源码分析
- 面试中关于MySQL十连问
- Python正则匹配的应用——替换括号及括号内字符、文本分句
- u盘推荐知乎_U盘推荐|U盘哪个牌子更好?怎么选择?
热门文章
- [置顶] 从零开始学C++之STL(二):实现简单容器模板类Vec(vector capacity 增长问题、allocator 内存分配器)...
- 能搜python题的软件_中国大学MOOC的APP用Python玩转数据期末考试搜题公众号答案...
- 继续跟上--“永远不要对一个外行聊你的专业”
- Java基础----泛型
- php 有趣的php 封装,封装PHP常用的操作类
- 发布文章自动上传图片并生成水印
- Java——JVM基本原理
- golang orm对比
- 2018年流行的vue前端UI框架
- java.util.enummap_java.util.EnumMap.clone()方法实例