javascript相关内容

如何为延续 monad 实现堆栈安全的 chainRec 运算符?

我目前正在试验延续 monad.Cont 实际上在 Javascript 中很有用,因为它从回调模式中抽象出来. 当我们处理一元递归时,总会有堆栈溢出的风险,因为递归调用不在尾部位置: const chain = g =>f=>k=>g(x => f(x) (k));= x => 的常量k=>k(x);const id = x =>X;const inc = x =>x + 1;con ..

这可以重构为使用通用功能原则吗?

比较器函数 ascending 接受两个参数 - a 和 b.它必须返回一个比较两者的整数. 我有一个要按名称排序的列表,因此我编写了以下函数. 我可以使用函数式惯用语来组合这两个函数,而不是让 byName 负责组合生成的函数吗? const 升序 = (a, b) =>a.localeCompare(b);const byName = (i) =>i.get('name');co ..
发布时间:2022-01-02 13:43:03 前端开发

循环直到...使用 Ramda

我试图使用 Ramda 重构几段代码,我想知道在 Ramda/函数式编程中什么是解决以下代码的好方法: let arrayOfSomething = initArray();for(let i = 0; SOME_INDEX_CONDITION(i)|| SOME_CONDITION(arrayOfSomething); i++) {常量值 = 操作(arrayOfSomething);cons ..
发布时间:2022-01-02 13:42:36 前端开发

减少函数中的变异累加器是否被认为是不好的做法?

我是函数式编程的新手,我正在尝试重写一些代码,以使其更符合函数式来掌握概念.刚才我发现了 Array.reduce() 函数并用它来创建一个组合数组的对象(我之前使用过 for 循环).但是,我不确定某些事情.看看这段代码: const sortedCombinations = combines.reduce((积累,梳理)=>{if(accum[comb.strength]) {accum[c ..
发布时间:2022-01-02 13:42:24 前端开发

“结合"以功能方式在 javascript 中运行?

我正在学习函数式编程,我想知道是否有一种方法可以像这样“组合"函数: 函数三元组(x){返回 x * 3;}函数 plusOne(x) {返回 x + 1;}函数是零(x){返回 x === 0;}结合(1);//1结合(三)(三)(加一)(1);//10结合(加一)(三)(是零)(-1);//真的 如果para是一个函数,它会将该函数“组合"到自身中,如果不是则返回最终结果.谢谢! 解 ..
发布时间:2022-01-02 13:42:12 前端开发

Javascript 是函数式编程语言吗?

仅仅因为函数是一等对象,有闭包,还有高阶函数,Javascript就配得上函数式编程语言吗?我认为它缺少的主要内容是 Pure Functions,它“感觉"不像其他函数式语言,如 lisp(尽管这并不是它不是函数式语言的真正原因......) 解决方案 重复 我自己对类似问题的回答, 没有公认的定义函数式编程语言. 如果你将函数式语言定义为支持一流的语言函数和 lambdas ..
发布时间:2022-01-02 13:38:52 前端开发

函数 foo(){} 和 foo = function(){} 有什么区别?

可能的重复: JavaScript:var functionName = function() {} vs function functionName() {} 它们是一样的吗?我一直想知道 解决方案 不,它们并不相同,尽管它们都产生了一个可以通过符号 foo 调用的函数.一个是函数声明,另一个是函数表达式.它们在不同的时间进行评估,对它们定义的范围有不同的影响,并且在不同的地方是 ..
发布时间:2022-01-02 13:36:11 前端开发

Javascript 作为函数式语言

我希望掌握函数式编程概念. 我多年来一直在使用 Javascript 来编写 Web 应用程序中的客户端脚本,除了使用原型之外,它都是简单的 DOM 操作、输入验证等. 最近,我经常阅读 Javascript 是支持函数式编程的语言之一. 以我对 Javascript 的熟悉和经验,我更喜欢用它来学习函数式编程.我希望我能够更多地专注于主要的功能概念,而不会被全新的语法所困扰或分 ..

什么是 Javascript 中的多态性?

我已经阅读了一些我可以在互联网上找到的关于多态性的可能的文章.但我想我不能完全理解它的含义和重要性.大多数文章没有说明为什么它很重要以及我如何在 OOP 中(当然在 JavaScript 中)实现多态行为. 我无法提供任何代码示例,因为我不知道如何实现它,所以我的问题如下: 是什么? 我们为什么需要它? 它是如何工作的? 如何在 javascript 中实现这种多态行为? ..

为什么我不能将函数调用(而不是函数引用或匿名函数)传递给 setTimeout()?

请忽略此代码一无所获的事实,并为可能是一个愚蠢的问题道歉! 我知道我不能将函数调用传递给 setTimeout() 作为第一个参数,但是 为什么我不能这样做? let names = ['Andy', 'Ross', 'David'];功能打印机(名称){控制台日志(名称);}names.forEach(name => setTimeout(printer(name), 1000); 结 ..
发布时间:2022-01-02 13:33:25 前端开发

在 JavaScript 中使用 Array.map 删除元素

我想使用 map() 函数过滤一组项目.这是一个代码片段: varfilteredItems = items.map(function(item){if( ...一些条件... ){归还物品;}}); 问题是过滤掉的项目仍然使用数组中的空间,我想完全清除它们. 有什么想法吗? 编辑:谢谢,我忘记了 filter(),我想要的实际上是一个 filter() 然后一个 map(). ..

基本数组构造的函数方法

这是我的代码,作用于myArray: var myArray = [];变量 i;for(i = 0; i 在没有虚拟变量 i 的情况下,是否有与上述功能等效的功能? 最喜欢的答案: while(myArray.push(Math.random()) $.map(Array(20), Math.random); for(var myArray = []; myArray.pu ..
发布时间:2022-01-02 13:30:27 前端开发

Array.prototype.filter() 的就地替代方法是什么

我有一个数组,我想从中删除一些元素.我不能使用 Array.prototype.filter(),因为我想就地修改数组(因为它节省了内存分配,而且对我来说更重要的是,使代码在我的用例).是否有我可以使用的 filter 的就地替代方案,可能类似于 Array.prototype.forEach() 可以用作 Array.prototype.map()? 的就地变体 编辑:应要求提供的最小示例: ..
发布时间:2022-01-02 13:30:06 前端开发

柯里化一个接受无限参数的函数

使用 ES5,你如何对一个带有无限参数的函数进行柯里化. function add(a, b, c) {返回 a + b + c;} 上面的函数只接受三个参数,但我们希望柯里化版本能够接受无限个参数. 因此,以下所有测试用例都应该通过: var test = add(1);测试(2);//应该返回3测试(2,3);//应该返回6测试(4,5,6);//应该返回16 这是我想出的解决方 ..
发布时间:2022-01-02 13:28:48 前端开发