You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript柯里化函数执行逻辑及参数疑问咨询:固定参数与动态参数的区别与rain函数传参原理

理解TypeScript柯里化函数中的固定参数与动态参数

嘿,我来帮你拆解这段代码的执行逻辑,搞清楚固定参数和动态参数的区别,还有为什么rain函数可以接收参数~

首先,这段代码用到了**柯里化(Currying)**技术——简单说就是把一个多参数的函数拆成一系列单参数函数的嵌套调用。我们一步步来看:

1. 拆解appendEmoji的定义

先把箭头函数转成更直观的普通函数写法,你就能瞬间明白它的结构:

const appendEmoji = function(fixed: string) {
  // 外层函数接收固定参数fixed,返回一个新函数
  return function(dynamic: string) {
    // 内层函数接收动态参数dynamic,返回拼接结果
    return fixed + dynamic;
  };
};

外层函数负责接收固定参数,然后返回一个“记住了这个固定值”的内层函数;内层函数则负责接收动态参数,最后把两个值拼接起来。

2. 固定参数的作用:一次性确定,永久复用

当你执行const rain = appendEmoji('️')时,其实是调用了外层函数,把fixed的值固定成了'️'。这时候rain其实就是外层函数返回的那个内层函数,而且它通过闭包“记住”了fixed = '️'这个值——不管你后续怎么调用rain,这个固定值都不会变。

同理,const sun = appendEmoji('☀️')就是把另一个内层函数的fixed固定成了'☀️',sun也会一直记住这个值。

3. 动态参数的作用:每次调用灵活变化

既然rain是那个等待接收参数的内层函数,那你自然可以给它传参啦!比如rain(' today')就是给内层函数传入dynamic = ' today',内层函数把之前记住的'️'和' today'拼接,得到'️ today'并输出。

如果你再调用rain(' tomorrow'),动态参数换成' tomorrow',就会得到'️ tomorrow'——动态参数就是用来让你每次调用都能灵活调整的部分。

固定参数 vs 动态参数的核心区别

  • 固定参数:在柯里化的外层函数传入,被闭包保存,后续所有对返回函数的调用都会复用这个值,是“一次确定,多次复用”的常量。
  • 动态参数:在柯里化的内层函数传入,每次调用都可以指定不同的值,是“每次调用都能灵活变化”的变量。

内容的提问来源于stack exchange,提问作者Mo0nKizz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 14:57:33