javascript - 哪些类型的副作用是由突变引起的?
问题描述
可变数据类型会导致副作用,但具体有哪些副作用以及如何对它们进行分组?到目前为止,我发现了两种效果:
- 竞争条件(由于异步计算/事件循环上下文中的单线程 JS)
- 错误预期的幂等性
第一点是不言自明的。但是,第二个需要澄清:
const append = xs => ys =>
(xs.unshift(ys), xs);
const empty = [];
const fold = f => acc => ([x, ...xs]) =>
x === undefined
? acc
: f(fold(f) (acc) (xs)) (x);
const xs = [1,2,3];
const main = fold(append) (empty);
main(xs);
console.log(main(xs)); // [1,2,3,1,2,3]
预期结果是[1,2,3]
,但该操作是非幂等的。
是否存在由可变数据类型引起的任何其他类型的副作用?由于这些副作用会造成很多麻烦,我认为了解您可能面临哪些副作用很重要。
解决方案
推荐阅读
- string - 提取字符串的 2 部分
- biztalk - BizTalk 保留交换 - 错误的根节点
- javascript - 函数中的异步获取
- c++ - 声明 bytes > 2 的多字节字符数组
- google-cloud-platform - 使用谷歌云代码编辑器
- python - 生成所有排列,其中排列的长度> Python中的元素数
- python - 使用正则表达式消除单词内的重复并在末尾添加标签
- python - 如何使用 Python 请求库发送原始 HTTP 请求消息?
- regex - 无法编译正则表达式模式:尝试在 tcl 中使用正则表达式进行子字符串处理时量词操作数无效错误
- flutter - Flutter - 在应用程序中包含一个 zip 文件并在处理后将其删除(我可以在运行时删除资产吗?)