Javascript一道面试题
2024-08-22 02:14:32
- 实现一个函数,运算结果可以满足如下预期结果:
add(1)(2) // 3
add(1, 2, 3)(10) // 16add(1)(2)(3)(4)(5) // 15
function add () {
var args = Array.prototype.slice.call(arguments); var fn = function () {
var arg_fn = Array.prototype.slice.call(arguments);
return add.apply(null, args.concat(arg_fn));
} fn.valueOf = function () {
return args.reduce(function(a, b) {
return a + b;
})
} return fn;
} console.log(add(1)); //1
console.log(add(1, 2)); //3
console.log(add(1, 2)(3)); //6
console.log(add(1)(2)(3)(4)); //10
可以看到,这里其实有一种循环。只有最后一次调用才真正调用到 valueOf,而之前的操作都是合并参数,递归调用本身,由于最后一次调用返回的是一个 fn 函数,所以最终调用了函数的 fn.valueOf,并且利用了 reduce 方法对所有参数求和.
最新文章
- matlab 循环读入多个mat文件组合成一个mat文件
- 疑惑的 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L
- java 文件压缩和解压(ZipInputStream, ZipOutputStream)
- Java NIO示例:多人网络聊天室
- 定时器图片轮播淡入淡出基本功能已实现,正在修改BUG中。。(附图效果和源代码)
- [crunch bang]在Crunch Bang安装和设置fcitx(小企鹅输入法)
- Java JDBC 驱动 MySQL
- eclipse或IDEA连接魅蓝
- Photoshop学习之路
- angular4升级angular5问题记录之this.location.back()
- hihocoder 1035 : 自驾旅行 III
- 一张图看懂AR至GL数据流
- 关于delete请求,后台接收不到数据
- [smf]smf论坛也很漂亮
- Tomcat的目录结构及部署应用程序
- HTML5规范尘埃落定,5个开发工具推荐
- BIO、NIO、AIO系列一:NIO
- FFMPEG转换WAV到MP3
- 52道Python面试题
- Spring事务的隔离级别