刷题-函数-闭包-返回函数

本文介绍了JavaScript中通过函数返回实现特定功能的方法,包括使用闭包处理多个参数的情况,并探讨了如何应对不确定数量参数的情形。

刷了两道题,函数比我想象的要有意思。

第一题,返回函数

//输入
functionFunction('Hello')('world')

//返回
hello,world

这种问题,我第一次遇到,实际上都是多个参数搞定,见识少了点。记录一下。

我是直接看的答案,因为我不会,思索也没有头绪。

看到的答案有两种。

第一:假设传入的,不知道怎么形容。参数?还是函数?姑且叫他参数吧,假设传入的参数就是是2个。

使用闭包就可以解决

function functionFunction(str) {
  var f = function(s){
        return str + "," + s;  
    }  
    return f  
}

functionFunction('hello')('world')
//返回
hello,world

或者

function functionFunction(str) {
  return function(s){
      return str + ', ' +s   
    }  
}
functionFunction('hello')('world')
//返回
hello,world

第二种接受不确定数量的参数:

function functionFunction(str) {
  var ret = Array.prototype.slice.call(arguments).join(',');
  var temp = function(str){
   ret = [ret,Array.prototype.slice.call(arguments).join(',')].join(',');
   return temp;      
  };
  temp.toString = function(){
   return ret;    
  }  
  return temp      
}

//输出:1, 2, 3, 4
functionFunction(1)(2)(3,4).toString();

//在函数中,

arguments 其实就是传递进来的参数。
arguments对象是所有(非箭头)函数中都可用的局部变量

Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组,除了IE下的节点集合(因为ie下的dom对象是以com对象的形式实现的,js对象与com对象不能进行转换)

只要知道功能就好,刚刚学习,深入也深入不了哪去。。。

第一次进来,arguments 的lenth是1,值也是1。

这时候借助闭包,temp 以后,往里面传入参数都用他接受,这个时候temp的方法toString 返回ret。最终返回temp

这么说可能没明白


我们把代码分成块来看。
//这是第一块

var ret = Array.prototype.slice.call(arguments).join(',');

//这是第二块,这里面引用了第一块的内容 ret

var temp = function(str){
    ret = [ret,Array.prototype.slice.call(arguments).join(',')].join(',');
    return temp;      
};

//第三块
temp.toString = function(){
    return ret;    
}

//第四块
return temp

 

正常情况下,1234按照步骤走的。
如果多个参数,那么
在第二块的时候,ret 被从新赋值了,因为调用的是ret,这个时候ret的值已经被改变。那么temp最终的值也会做相应的改变。
写之前有点没有搞懂,写的过程好像有一点明白。
感冒吧,脑子不清楚,写的也不是很清楚,先记录下来。
其实一般情况只要掌握了,传入两个参数使用闭包,就可以了


转载于:https://www.cnblogs.com/damai/p/8744755.html

数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究(Matlab代码实现)内容概要:本文围绕“数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究”展开,提出了一种结合数据驱动与分布鲁棒优化方法的建模框架,用于解决电热综合能源系统在不确定性环境下的优化调度问。研究采用两阶段优化结构,第一阶段进行预决策,第二阶段根据实际场景进行调整,通过引入1-范数和∞-范数约束来构建不确定集,有效刻画风电、负荷等不确定性变量的波动特性,提升模型的鲁棒性和实用性。文中提供了完整的Matlab代码实现,便于读者复现和验证算法性能,并结合具体案例分析了不同约束条件下系统运行的经济性与可靠性。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及工程技术人员,尤其适合从事综合能源系统、鲁棒优化、不确定性建模等相关领域研究的专业人士。; 使用场景及目标:①掌握数据驱动的分布鲁棒优化方法在综合能源系统中的应用;②理解1-范数和∞-范数在构建不确定集中的作用与差异;③学习两阶段鲁棒优化模型的建模思路与Matlab实现技巧,用于科研复现、论文作或工程项目建模。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现细节,重点关注不确定集构建、两阶段模型结构设计及求解器调用方式,同时可尝试更换数据或调整约束参数以加深对模型鲁棒性的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值