如何在 JavaScript 函数调用中预先设置参数? (部分功能应用)

2023-12-08

我正在尝试编写一个 JavaScript 函数,它将返回其第一个参数(函数),并将其所有其余参数作为该函数的预设参数。

So:


function out(a, b) {
    document.write(a + " " + b);
}

function setter(...) {...}

setter(out, "hello")("world");
setter(out, "hello", "world")();
  

将输出“hello world”两次。对于 setter 的一些实现

我第一次尝试时遇到了操作参数数组的问题,但似乎有更好的方法来做到这一点。


首先,你需要一个部分 -部分咖喱和咖喱之间有区别- 这就是你所需要的一切,没有框架:

function partial(func /*, 0..n args */) {
  var args = Array.prototype.slice.call(arguments, 1);
  return function() {
    var allArguments = args.concat(Array.prototype.slice.call(arguments));
    return func.apply(this, allArguments);
  };
}

现在,使用您的示例,您可以完全按照您的要求进行操作:

partial(out, "hello")("world");
partial(out, "hello", "world")();

// and here is my own extended example
var sayHelloTo = partial(out, "Hello");
sayHelloTo("World");
sayHelloTo("Alex");

The partial()可以使用函数来实现,但是is not柯里化。这是引用自关于差异的博客文章:

部分应用程序采用一个函数并从中构建一个采用较少参数的函数,而柯里化则通过组合每个采用单个参数的函数来构建采用多个参数的函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JavaScript 函数调用中预先设置参数? (部分功能应用) 的相关文章

  • 邮件附件媒体类型错误 Gmail API

    我正在尝试通过 Javascript 客户端中的 Gmail API 发送带有附加 jpeg 文件的消息 到目前为止我写的代码如下 ajax type POST url https www googleapis com upload gma
  • 如何制作像Stackoverflow一样的可折叠评论框

    我正在构建一个网站 并且有一个状态更新列表 我希望允许用户为列表中的每个项目撰写评论 但是我正在尝试实现一个类似于堆栈溢出工作方式的用户界面 特别是可折叠的评论表单 列表 用户在其中单击对列表中的特定状态更新添加评论 并且在列表中的该项目下
  • React延迟加载/无限滚动解决方案

    我花了一段时间才弄清楚如何使用优秀的延迟加载图像React Lazyload 组件 https github com jasonslyvia react lazyload 演示在滚动时延迟加载图像 但在测试时我无法获得相同的行为 罪魁祸首是
  • 区分单击与 mousedown/mouseup

    我已经阅读了有关这种情况的 stackoverflow 上的几个答案 但没有一个解决方案有效 我尝试根据用户是否单击某个元素或使用 jQuery 将鼠标按住该元素来执行不同的操作 有可能做到这一点吗 onMouseDown 将在按下左侧或右
  • Chrome 扩展程序中的后台脚本到底何时运行?

    在我的 chrome 扩展中 我有一个后台脚本 它将使用XMLHttpRequest note that this code is in the global scope i e outside of any function also n
  • 如何在 JavaScript 中构建一个计算数组中出现次数的对象?

    我想计算数组中某个数字出现的频率 例如 在Python中我可以使用Collections Counter创建一个字典 记录某个项目在列表中出现的频率 据我所知 JavaScript 是这样的 var array 1 4 4 5 5 7 va
  • 使用 easyXDM 调整 IFrame 大小

    我将 iFrame 代码提供给客户 以便他们可以显示我网站上的动态内容 我希望其页面上的 iFrame 能够调整大小以适合我的内容 我按照 easyXDM 网站的说明进行操作 但也许我遗漏了一些东西 我没有收到任何错误 但 iFrame 保
  • 如何获取数组中最后 5 个元素(不包括第一个元素)?

    在 JavaScript 数组中 如何获取最后 5 个元素 排除第一个元素 1 55 77 88 would return 55 77 88 添加其他示例 1 55 77 88 99 22 33 44 would return 88 99
  • 带有嵌入式 Ruby 的 Javascript:如何安全地将 ruby​​ 值分配给 javascript 变量

    我在页面的 javascript 块中有这一行 res foo 处理这种情况的最佳方法是什么 ruby var里面有单引号吗 否则会破坏 JavaScript 代码 我想我会用红宝石JSON http json org ruby var 上
  • t /= d 是什么意思? Python 和错误

    t current time b begInnIng value c change In value d duration def easeOutQuad swing function x t b c d alert jQuery easi
  • 页面点击其他路径后 $timeout 继续运行

    我在用yo angular fullstack生成器来构建我的网站 当用户注册该网站时 它将发送一封带有链接的激活电子邮件 当用户点击该链接时 会显示激活成功并超时进入主页 但是 当超时未结束 用户点击页面中的任何其他链接时 会跳转到其他页
  • 如何检查jquery数据表中的每个复选框?

    我有一个第一列带有复选框的表格 我使用 jQuery DataTable 插件显示我的表格 我制作了 2 个链接来选择 取消选择每个复选框 这是选择全部的一个 a href Select all a 和 JavaScript functio
  • 全局定义的 AngularJS 控制器和封装

    根据 AngularJS 的教程 控制器函数仅位于全局范围内 http docs angularjs org tutorial step 04 http docs angularjs org tutorial step 04 控制器函数本身
  • 优化正则表达式以过滤数千个 HTML 选择选项

    背景 我开发了一个基于 jQuery 的穿梭小部件 https stackoverflow com a 13557000 59087对于 HTMLselect元素 因为我找不到一个经过最低限度编码并提供正则表达式过滤器来补偿的元素变音符号
  • Tween JS 基础知识之三个 JS 立方体

    我是 Tween JS 的新手 尝试使用 Tween 制作一个向右移动的简单动画 下面是我在 init 函数中的代码 我使用的是三个 JS var geometry new THREE CylinderGeometry 200 200 20
  • nvd3.js - 无法更改折线图中线条的颜色

    我正在尝试更改 nvd3 折线图不同线条的颜色here http nvd3 org livecode index html codemirrorNav但我无法理解该怎么做 我想将示例中的 2 条线的颜色更改为绿色和青色 我试过 nv add
  • 如何在 ChartJS 中创建自定义图例

    我需要使用 ChartJS 库为我的圆环图创建自定义图例 我已经使用 ChartJS 提供的默认图例创建了甜甜圈 但我需要一些修改 我希望其价值高于汽车名称 另外 我不喜欢粘性图例 我想将其与甜甜圈分开 这样我就可以更改字体 框的样式 例如
  • 地址更改时如何停止 Angular 重新加载

    我正在使用 Angular 的scrollTo and anchorScroll像这样 app controller TestCtrl function scope location anchorScroll scope scrollTo
  • 需要澄清令人困惑的 Http4s 消息类型 `Response[F]` / `Request[F]`

    我很难理解为什么Request and Response参数化为F 类似的东西是猫效应数据类型资源 从文档中 https typelevel org cats effect docs std resource https typelevel
  • 我可以防止将 Leaflet 地图平移到世界边缘之外吗?

    有没有办法限制平移到世界边缘之外 在这幅画中 棕色是世界 灰色是虚空 我想让它不可能像这样平移 Leaflet 允许您控制地图抵抗被拖出边界的程度maxBoundsViscosity选项 值 0 到 1 将其设置为最大值会完全禁用拖动出界

随机推荐

  • 静态类与单例类

    我知道这个话题已经被讨论了一遍又一遍 但我仍然有一个疑问 我希望有人可以帮助我或指导我找到一篇关于 SO 的现有帖子 在传统的C语言中 静态变量存储在数据段中 局部变量存储在堆栈中 我认为与局部变量相比 静态变量的存储和维护成本更高 正确的
  • 如何从标准化数组中获取原始数据

    下面给出了一段简单的代码 它按行规范化数组 import numpy as np from sklearn import preprocessing X np asarray 1 2 1 4 1 2 dtype np float X nor
  • 制作自定义 django 视图装饰器(带参数)时遇到问题

    因此 我阅读了所有类似的问题并复制了他们写的内容 但我仍然遇到问题 所以我想要这样的东西 Yes I know django has one but I want to make my own rate limit seconds 10 m
  • Excel Jet OLE DB:插入日期时间值

    OLEDB 可用于读取和写入 Excel 工作表 考虑以下代码示例 using OleDbConnection conn new OleDbConnection Provider Microsoft Jet OLEDB 4 0 Data S
  • 禁用 Laravel 中的日志记录?

    是否有任何全局配置选项来禁用所有日志记录 我的意思不仅仅是禁用错误记录 我的意思是在调用 Log 时实际上禁用写入文件 如果您不想写入日志文件 您可以简单地注释掉文件中的以下行start global php Log useFiles st
  • 如何在java中使用LinkedHashMap从sql server数据库填充下拉列表

    在 SQL Server 数据库中 我有一个表 其中包含三列 即 Ref Name Ref from 和 Ref to 现在我想要一个下拉列表来按行保存值 即该行的所有列值应按以下方式位于下拉列表中 参考 1 2014 10 10 07 1
  • PostGIS 中的缓冲区(圆形)

    我必须扩展普通的 GeoJSON 格式以添加一些不受支持的多边形 例如圆 type Circle radius 0 001 coordinates 5 417075157165527 43 29129488122568 这是一个例子 坐标标
  • Doctrine2 在复合主键中映射具有复合外键的实体

    我有一个有很多表的模型 但在本例中我们只需要三个 关键是 1 的复合主键也是外键 复合脚趾 Symfony 抛出此异常 MappingException 无法映射实体 你的 SomethingBundle Entity Empleado 使
  • 如何将执行延迟到 os.system 完成之后?

    我在用os system将文件从一个系统复制到另一个系统 一个非常简单的程序的逻辑是在复制该文件后执行另一组命令 问题是os system实际上并不等待文件被复制 而是开始执行下一行 这会导致系统出现问题 我实际上可以通过提供一些等待功能t
  • 将 setHours 设置为零在 NodeJs 中不起作用

    我正在尝试获取当前日期进行比较并将时间设置为零但仍然有时间 var today new Date new Date setHours 0 0 0 0 var todaynew today toISOString console log to
  • 如何将 JSON 响应映射到自定义类对象

    我正在使用 C 调用 APIUnirest io 我得到以下 JSON 响应 如响应体 persons id a010 name Joe subjects Math English id b020 name Jill subjects Sc
  • 使用模态窗口或弹出窗口打开表单

    对此我有些挣扎 我有一个数据表表单 其中列出了每条记录的 ID 和其他信息 到目前为止 我已经找到了一些 VBA 代码 它将每个 ID 作为超链接打开并将其传递到另一个表单中 我遇到的问题是我希望在弹出窗口或模式窗口中打开表单 到目前为止我
  • 如何在 JSF 中的 EL 表达式 #{ } 中写入硬编码字符串值?

    我正在尝试执行以下操作 rendered billBean company equals something 但问题是我不会写 something inside 它会导致以下 XML 解析错误 元素类型 h commandLink 后面必须
  • 指定 jar 的类路径

    我正在尝试配置 JAR 的类路径 以便我的 ResourceBundle 可以从中获取属性文件 如果我从 class 文件运行它并指定 cp标记它工作正常 并且System err println System getProperty ja
  • Android 和 IOS 上的 Qt 会话管理

    我目前正在使用 Qt Quick Controls 2 开发一个适用于 Android 和 IOS 的应用程序 该应用程序可以登录 帐户凭据将存储到外部 SQL 数据库中 我已经弄清楚如何与数据库交互 但我无法弄清楚如何在 Android
  • 是否可以等待未声明为异步的 IO 操作?如果没有,我该怎么办?

    我是 C 异步编程的新手 但我仍然对一些事情感到困惑 我读到 在 NET 4 5 之后 不再推荐 APM 和 EAP 用于新开发 因为 TAP 应该取代它们 source 我想我了解 async await 的工作原理 并且我能够使用它们来
  • 垂直居中、高度未知、页面上的其他内容

    好吧 这基本上是常见的 如何使用 CSS 垂直居中 问题 但有一些问题 没有 JavaScript 仅限 HTML 和 CSS 只要当今的浏览器能够很好地支持 CSS3 就可以了 该元素的内容以及高度都是未知的 它可能是几十到几百像素 将来
  • iOS GCD 自定义并发队列执行顺序

    我对这个问题有疑问 根据苹果公司的文件 同时 并发队列 也称为全局调度队列的一种 同时执行一个或多个任务 但任务仍按照添加到队列的顺序启动 当前正在执行的任务在由调度队列管理的不同线程上运行 在任何给定点执行的任务的确切数量是可变的 并且取
  • Bash:从最大列递归地将一行写入文件

    链接回我之前的问题 我发现问题并没有完全解决 问题是这样的 我有名为RUN1 RUN2 and RUN3每个目录都有一些文件 目录RUN1有文件mod1 1 csv mod1 2 csv mod1 3 csv 目录RUN2有文件mod2 1
  • 如何在 JavaScript 函数调用中预先设置参数? (部分功能应用)

    我正在尝试编写一个 JavaScript 函数 它将返回其第一个参数 函数 并将其所有其余参数作为该函数的预设参数 So function out a b document write a b function setter setter