分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

js中sum(2)(3)(4)返回9和sum(2,3)和sum(2)(3)都返回5并要求扩展性

发布时间:2023-09-06 01:42责任编辑:白小东关键词:js

网上有很多关于sum(1)(2)(3),sum(1,2,3)之类的面试题要求输出相同的结果6并要求可以满足扩展,即有多个参数时也能符合题设的要求,所以自己写了部分例子可以大概满足这些面试题的要求

<!DOCTYPE html>
<html lang="en">
<head>
???<meta charset="UTF-8">
???<title>Document</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(){
???????????????????????return sum2;
???????????????????}
???????????????????????return suum;
???????????????}
???????????????else{
???????????????????let sum1 = 0;
???????????????????for(var i = 0;i<[...args].length;i++){
???????????????????????sum1 += [...args][i]; ???????
???????????????????}
???????????????????console.log(`outPut1 ?${sum1}`);
???????????????} ?
???????????????} ??
???????????sum(); //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));即可


???????//感兴趣的朋友可以直接复制粘贴看效果即可
???</script>
</body>
</html>

js中sum(2)(3)(4)返回9和sum(2,3)和sum(2)(3)都返回5并要求扩展性

原文地址:https://www.cnblogs.com/qdcnbj/p/8436985.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved