函数式编程中的引用透明性

2024-02-03

我是 JS 新手,正在学习函数式编程,并遇到了“引用透明度”这个术语。另外,我发现了这样的说法“引用透明度表明用纯函数的值替换纯函数是安全的”。这是否意味着只要函数变热,使用 RT 就可以让 JIT 编译器轻松地用函数的返回值替换函数?真的吗?


这是一个例子:

这是一个纯函数:对于相同的输入,它将始终返回相同的输出

const even = x => x % 2 === 0;

让我们创建isTenEven()这将检查是否10是否为偶数:

const isTenEven = () => even(10);

既然我们保证even(10) === true will always如果为真,那么我们确实可以用值替换函数调用:

const isTenEven = () => true;

还有你的程序仍然可以工作。

但是,如果您无法这样做,even不纯洁!
这是一个愚蠢的例子:每月一次10将不再是偶数:

const even = x => (new Date()).getDate() === 15 ? false : x % 2 === 0;

也许你的程序是例外isTenEven()返回任一true or false,所以强迫它总是假设它会返回true could导致意想不到的后果。

当然,在这种特殊情况下,我不确定这些后果会是什么,但你永远不知道……这正是重点。

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

函数式编程中的引用透明性 的相关文章

  • 这段代码有什么问题。如果用户选择或不选择复选框,为什么它仍然显示 MsgBox? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 无论我是否选择复选框 它仍然会给出
  • 如何精确缩放已翻译的d3地图

    我有一张已翻译的地图 以使其正确适合画布 我正在尝试实现一种缩放它的方法 它确实有效 但是当您放大时它会远离中心 而不是以鼠标甚至画布为中心 这是我的代码 function map data total views var xy d3 ge
  • 有没有办法将 Google 文档分割成多个 PDF?

    我想在 Google Scripts VBA 代码中复制我为 Word 文档编写的代码 基本上 它通过搜索我插入文档中的标签 将文档 切片 为多个 PDF 文件 目的是允许合唱团使用 forScore 管理乐谱的应用程序 在切片点插入先前注
  • 如何针对 IE 进行优化?

    我有一个 JS 密集型应用程序 它在 IE 中运行缓慢 我将花费大约一周的时间来优化 IE 并且我想要一些关于尝试的方向 我发现这个线程引用Drip https ieleak svn sourceforge net svnroot iele
  • 通过 Javascript 更改 Webkit 属性?

    请帮助我 可能是因为我对 CSS 动画和 Javascript 相当陌生 但我使用的代码应该更改它的属性 当我运行代码时 它会执行代码中的所有其他操作 除了更改所需 div 的 CSS 属性 我已经尝试了所有这四种方法 但似乎都不起作用 它
  • 如何从对象数组中删除所有重复项?

    This is a large array of objects e g let totalArray id rec01dTDP9T4ZtHL4 fields user id 170180717 user name abcdefg even
  • 光标:IE 8 和 9 中的自动行为

    我想要的是为整个正文标记指定cursor pointer 这样页面的背景是可点击的 但我也希望页面的其余部分像以前一样工作 所以我尝试为div设置cursor auto 其中包含这一页 在 FF Chrome 和 safari 中 它工作得
  • 使用 jquery 更改锚文本和图标

    我有一个隐藏或显示 div 的锚标记 但我无法更改它的文本和图标 如何更改文本和图标标签 因为目前它将图标标签解析为常规文本 锚标记 a class collapse info btn i class icon arrow up icon
  • Chrome 跨域 PATCH 请求不起作用

    我有一个带有 REST Api 的网站 现在我正在创建一个浏览器扩展 它将从某些页面收集数据并将它们发送回 REST Api 因为我希望我的扩展能够与 Firefox 和 Chrome 兼容 并且易于维护 所以我将实际代码作为脚本标记注入到
  • Moment.js 动态更新时间(以秒为单位)

    我试图显示时钟 that 每秒更新一次 e g 2015 年 1 月 5 日 12 05 01 它似乎对我来说工作得很好 对于相同的代码 并且只有 moment min js 指向v2 11 0 看看代码 来源 MilkyWayJoe va
  • 使用淘汰赛动态显示/隐藏元素

    我有一个表 有四列 即代码 名称 数量和价格 其中 我想动态更改数量列的内容 元素 通常 它应该显示其中显示数量的元素 当用户单击元素时 我想显示该元素 以便用户可以编辑数量 我正在尝试按照 示例2 来实现淘汰赛文档链接 http knoc
  • Webpack - 资产大小限制中的警告:以下资产超出了建议的大小限制 (244 KiB)

    当我在生产模式下运行 webpack 时 有资产规模限制 超出 的警告 我怎样才能运行而不出现这个错误 在我的项目中 我包含 css 并且我看到 webpack 构建中包含一些 node module 目录 但是如果我排除 css 的 no
  • 带有桌子的嵌套表

    我在应用了表排序器的表中嵌套了表 它在嵌套表中添加了排序标题 但是它们没有对行进行排序 并且抛出了JavaScript错误 我想拥有 嵌套表不可排序 巢表上的排序实际上可以工作 但不是现状 您的第一个选择要容易得多 使嵌套表不可排序 像这样
  • jQuery 模板插件:如何创建双向绑定?

    我开始使用 jQuery 模板插件 微软创建的 但现在我面临这个问题 模板用于绑定到对象数组的一堆表单 当我更改其中一个表单上的某些内容时 我希望更新绑定的对象 但我不知道如何自动执行该操作 这是一个简单的例子 现实生活中的模板和对象要复杂
  • 如何获取从 Express (Node.js) 中的表单传递的数据

    我想获取使用表单从页面传递的数据 并在重定向的页面中使用该数据 我的客户端有这个表格
  • 如何在react.js中将/n替换为换行符?

    我正在尝试更换每一个 n to a br tag in ReactJS In my note note对象有一个包含多个的字符串 n in it 示例注释 注释 test ntest ntest 我尝试过的ReactJS note note
  • javascript 闭包和对象引用

    我的情况有点晦涩难懂 主要是因为我认为我已经掌握了闭包 所以基本上我想要的是将集合重置为默认值 假设我有一个集合 它具有带有对象参数数组的构造函数 var c new collection x y z 然后集合定期更新 因为我没有保留数组的
  • “memset”没有 DLL 那么如何 ctype 它

    如何使用memset在 jsc 类型中 没有对应的 DLL 我搜索 搜索了 js ctype 代码 但找不到要破解的示例 如果你只是想memset一个数组为零字节 然后我有 好消息 大家 js ctypes 会将新数组初始化为零 否则 最简
  • 尽管 getBoundingClientRect() 是假的,但如何将事件坐标转换为 SVG 坐标?

    我正在尝试根据鼠标的位置在 SVG 元素上动态绘制内容 不幸的是 我很难将 mousemove 事件中的鼠标坐标转换为 SVG 元素的坐标空间 这是我一直在测试的一个有缺陷的函数 CylinderDemo prototype handleM
  • 加载谷歌地图控件时是否有事件?

    我知道tilesloaded 但控件似乎在该事件之后加载 我基本上希望能够通过 jQuery 获取控件 但甚至找不到正确的监听 我也刚刚处理了 没有类似的事件 在控件可见之前空闲和tilesloaded触发 因此 基本上将 特殊控制 类添加

随机推荐

  • 后续问题:Modelica仿真和方程初始化总时间计算

    我正在写这个相关问题this https stackoverflow com questions 61375492 modelica total time calculation of simulation and equation ini
  • 如何在 python Gekko 中加速具有 1446 个变量的整数非线性规划?

    我正在解决一个整数非线性编程问题与蟒蛇壁虎 其中有 1446 个整数变量 31 个变量线性组合的约束以及 1 个要最大化的非线性目标 该程序需要很长时间 我想知道是否可以speed up 以及如何更好地调整m solver options
  • 在reactjs中convert-csv-to-json返回错误

    使用时https www npmjs com package convert csv to json https www npmjs com package convert csv to json在reactjs中 我收到错误Uncaugh
  • 雪花上带有 RANGE 的滑动窗框的替代品

    我正在将一些 BigQuery 代码迁移到雪花 但在使用带有范围的 Window 函数时遇到了一些麻烦 这是因为 Snowflake 系列不支持滑动窗框 我需要使用 2 PRECEDING AND CURRENT ROW 之间的范围 逻辑
  • 什么是“.dll.a”文件?

    我正在尝试使用 Windows 应用程序中的开源库 我能找到的唯一预构建版本是一个名为 lib dll a 的文件 这是什么格式 我可以将其转换为普通的dll文件吗 命名输出文件libjvm dll a会允许gcc认识到它是一个 图书馆名为
  • 如何将日期时间格式化为国际格式?

    国际字符串表示格式为 YYYY MM DD HH MM SS HHMM 例如2010 06 10 21 21 10 0400 基本上我遇到的问题是弄清楚如何获得与 GMT 的差异 DateTime dt new DateTime 2008
  • django 中过滤图书列表的每位作者的图书数量

    简短的问题 我有两个模型 class Author models Model name models CharField max length 250 class Book models Model title models CharFie
  • 取代 Watin 的测试框架,是否会停止维护?

    我的印象是 Watin 不再被维护 并询问哪个框架最适合在 net 浏览器中测试网站 早在 7 月份 Jeroen 就在 WatiN 邮件列表中发表了以下言论 WatiN 还活着吗 是的 活动对外部是否可见 world 不 这是一件坏事 在
  • .NET 6.0 未显示在 Visual Studio 2022(常规版本)中

    我已经安装了 NET 6 0 SDK和Visual Studio 2022 但是 Visual Studio 2022 不提供选择 NET 6 0 的功能 我知道我可以使用目标框架编辑项目文件 所以请不要这样做 这个问题特别围绕 Visua
  • BCP - 导入到包含 IDENTITY 列的表时,转换规范的字符值无效

    我正在尝试将文件从 UNIX 加载到 SQL Server 当我运行 BCP 时出现以下错误 但当我将数据类型更改为 Char 时 我能够加载相同的文件 使用的命令 bcp SQLAAA APP XXX ACTIVITY V1 in hom
  • 如何在 Openssl 中使用 AES 进行加密

    我正在尝试编写一个示例程序来使用 Openssl 进行 AES 加密 我尝试浏览 Openssl 文档 这很痛苦 但无法弄清楚太多 我浏览了代码并找到了 API 我使用它编写了一个小程序 如下所示 请省略行号 我没有看到任何加密发生 我错过
  • Laravel 6.0 Eloquent - 按日期和状态排序

    尝试先按最新日期订购我的桌子 然后按状态订购 状态可以是 新建 审核中 拒绝 已关闭 状态是数据库中的枚举字段 我尝试了几件事但没有成功 这是我用这段代码得到的最接近的结果 我是 Laravel 新手 所以不知道该怎么做 inquiries
  • 在 iOS 16.2 上水平布局 2 个文本字段时应用程序崩溃

    当水平布局 2 文本字段时 我的应用程序在 iOS Simulator 16 2 上崩溃了 在 iOS Simulator 16 2 上逐步重现 环境 Xcode 14 2 iOS 16 2 模拟器 Step 1 2 text fields
  • 如何限制MySQL距离查询

    我正在尝试执行距离计算以返回特定距离内的地点列表 这是基于使用邮政编码数据库并确定从出发地到每个位置的距离 我想要做的是将结果限制在距原点一定距离内 但我的 MySQL 查询遇到了问题 这是基本查询 SELECT ROUND DEGREES
  • R - 二进制博客数据的聚类分析

    我有一个与下面的示例类似的网络数据 它仅具有用户和二进制值 用于表明该用户是否点击了网站内的特定链接 我想对这些数据进行一些聚类 我的主要目标是根据用户的在线行为找到相似的用户 对此有什么好的聚类算法 我尝试过 k means 它不适用于二
  • 如何使单个 React Docker 构建/映像在所有环境中运行?

    我正在尝试在单个 Docker 容器中部署一个 React 应用程序 该容器能够在 OpenShift 平台上运行 dev preprod 和 prod 在该平台上我只能推送标记的 docker 镜像 为了做到这一点我有 使用 Github
  • 警告:未将分支主设置为其自己的上游

    我正在尝试将 git 分支设置为上游 但低于警告 Command git checkout master git branch set upstream to master 警告 未将分支主设置为其自己的上游 我该如何解决 这是否意味着它已
  • PHP Switch 语句

    switch sort case abc order by subject ASC break case fn order by u username ASC break case rd order by p posted on DESC
  • 将 ssis 中的 sql server 查询输出导出到文本文件,包括列标题

    我一直在尝试将 SqlServer sql 查询 存储过程 的输出导出到文本文件 我使用带有 OLEDB 源和平面文件目标的数据流任务来实现它 我还想在文本文件中获取列标题以及查询结果 但我不知道如何包含列标题 我想在 SSIS 中动态地执
  • 函数式编程中的引用透明性

    我是 JS 新手 正在学习函数式编程 并遇到了 引用透明度 这个术语 另外 我发现了这样的说法 引用透明度表明用纯函数的值替换纯函数是安全的 这是否意味着只要函数变热 使用 RT 就可以让 JIT 编译器轻松地用函数的返回值替换函数 真的吗