JavaScript add(2, 3, 4),add(2)(3)(4)和add(2, 3)(4)
🌙
手机阅读
本文目录结构
问题
下面的方法结果都是9;
console.log(add(2, 3, 4));
console.log(add(2)(3)(4));
console.log(add(2, 3)(4));
参考
let _typeof = function (data) {
let value = /\[object (\w+)\]/.exec(
Object.prototype.toString.call(data)
);
return value ? value[1].toLowerCase() : '';
}
// 参数3个的时候,返回值
// 参数小于3的时候,返回函数,比如,1,2
function add (...arg) {
// TODO转出数组
let ary = [...arg];
let sum = 0;
// 相加
ary.forEach(ele => {
// 判断参数类型
if (_typeof(ele) !== 'number') {
throw Error(`不支持非数字类型;参数${ele} (${_typeof(ele)} 类型)`)
}
sum += ele;
})
// console.log(sum);
// 返回
if (ary.length >= 3) {
return sum;
}
const _add = function () {
if (arguments.length > 1) {
throw Error(`暂时不支持链式调用多个参数`)
}
if (ary.length === 1) {
return add(sum, ...arguments)
}
return add(sum, ...arguments, 0)
}
return _add;
}
console.log(add(2, 3, 4));
console.log(add(2)(3)(4));
console.log(add(2, 3)(4));
更多面试题
如果你想了解更多的前端面试题,可以查看本站的WEB前端面试题 ,这里基本包涵了市场上的所有前端方面的面试题,也有一些大公司的面试图,可以让你面试更加顺利。
面试题 | ||
---|---|---|
HTML | CSS | JavaScript |
jQuery | Vue.js | React |
算法 | HTTP | Babel |
BootStrap | Electron | Gulp |
Node.js | 前端经验相关 | 前端综合 |
Webpack | 微信小程序 | - |
这些题库还在更新中,如果你有不错的面试题库欢迎分享给我,我整理后放上来;人人为我,我为人人,互帮互助,共同提高,祝大家都拿到心仪的Offer!