javascript相关内容
我目前正在试验延续 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
..
我试图使用 Ramda 重构几段代码,我想知道在 Ramda/函数式编程中什么是解决以下代码的好方法: let arrayOfSomething = initArray();for(let i = 0; SOME_INDEX_CONDITION(i)|| SOME_CONDITION(arrayOfSomething); i++) {常量值 = 操作(arrayOfSomething);cons
..
我是函数式编程的新手,我正在尝试重写一些代码,以使其更符合函数式来掌握概念.刚才我发现了 Array.reduce() 函数并用它来创建一个组合数组的对象(我之前使用过 for 循环).但是,我不确定某些事情.看看这段代码: const sortedCombinations = combines.reduce((积累,梳理)=>{if(accum[comb.strength]) {accum[c
..
我正在学习函数式编程,我想知道是否有一种方法可以像这样“组合"函数: 函数三元组(x){返回 x * 3;}函数 plusOne(x) {返回 x + 1;}函数是零(x){返回 x === 0;}结合(1);//1结合(三)(三)(加一)(1);//10结合(加一)(三)(是零)(-1);//真的 如果para是一个函数,它会将该函数“组合"到自身中,如果不是则返回最终结果.谢谢! 解
..
这是官方文档所说的 updateIn(keyPath: Array, updater: (value: any) => any): ListupdateIn(keyPath: Array, notSetValue: any, updater: (value: any) => any): ListupdateIn(keyPath: Iterable, updater: (value: any) =
..
仅仅因为函数是一等对象,有闭包,还有高阶函数,Javascript就配得上函数式编程语言吗?我认为它缺少的主要内容是 Pure Functions,它“感觉"不像其他函数式语言,如 lisp(尽管这并不是它不是函数式语言的真正原因......) 解决方案 重复 我自己对类似问题的回答, 没有公认的定义函数式编程语言. 如果你将函数式语言定义为支持一流的语言函数和 lambdas
..
简而言之,这是有效的: [1, 2, 3].reduce(function (a, b) { return Math.max(a, b); });=>3 但这不会: [1, 2, 3].reduce(Math.max);=>NaN 纯粹的困惑. 这是在 Firefox 3.5.9 中,我认为它使用的是 reduce、FWIW 的 mozilla 标准实现. 解决方案 Math
..
有人能解释一下这个功能吗? var bindbind = Function.prototype.bind.bind(Function.prototype.bind); 我理解它产生的结果: var bindedContextFunc = bindbind(function)(context);bindedContextFunc(args); 但是不明白创建这个函数的过程,我的意思是部分bi
..
可能的重复: JavaScript 对象是否可以具有原型链,也可以是一个函数? 我希望制作一个可调用的 JavaScript 对象,具有任意原型链,但不修改 Function.prototype. 换句话说,这必须起作用: var o = { x: 5 };var foo = bar(o);assert(foo() === "Hello World!");删除 foo.x;断言(f
..
可能的重复: JavaScript:var functionName = function() {} vs function functionName() {} 它们是一样的吗?我一直想知道 解决方案 不,它们并不相同,尽管它们都产生了一个可以通过符号 foo 调用的函数.一个是函数声明,另一个是函数表达式.它们在不同的时间进行评估,对它们定义的范围有不同的影响,并且在不同的地方是
..
我希望掌握函数式编程概念. 我多年来一直在使用 Javascript 来编写 Web 应用程序中的客户端脚本,除了使用原型之外,它都是简单的 DOM 操作、输入验证等. 最近,我经常阅读 Javascript 是支持函数式编程的语言之一. 以我对 Javascript 的熟悉和经验,我更喜欢用它来学习函数式编程.我希望我能够更多地专注于主要的功能概念,而不会被全新的语法所困扰或分
..
我已经阅读了一些我可以在互联网上找到的关于多态性的可能的文章.但我想我不能完全理解它的含义和重要性.大多数文章没有说明为什么它很重要以及我如何在 OOP 中(当然在 JavaScript 中)实现多态行为. 我无法提供任何代码示例,因为我不知道如何实现它,所以我的问题如下: 是什么? 我们为什么需要它? 它是如何工作的? 如何在 javascript 中实现这种多态行为?
..
请忽略此代码一无所获的事实,并为可能是一个愚蠢的问题道歉! 我知道我不能将函数调用传递给 setTimeout() 作为第一个参数,但是 为什么我不能这样做? let names = ['Andy', 'Ross', 'David'];功能打印机(名称){控制台日志(名称);}names.forEach(name => setTimeout(printer(name), 1000); 结
..
我知道在函数内部是this. var func = function {返回 this.f === arguments.callee;//=>true,如果绑定到某个对象//=>false,if 绑定为 null,因为 this.f === undefined}var f = func;//不绑定任何东西;var obj = {};obj1.f = 函数;//如果作为 obj1.f() 调用则绑
..
我想使用 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
..
我有一个数组,我想从中删除一些元素.我不能使用 Array.prototype.filter(),因为我想就地修改数组(因为它节省了内存分配,而且对我来说更重要的是,使代码在我的用例).是否有我可以使用的 filter 的就地替代方案,可能类似于 Array.prototype.forEach() 可以用作 Array.prototype.map()? 的就地变体 编辑:应要求提供的最小示例:
..
我是 underscore.js 的新手._.each() 中 [context] 的目的是什么?应该如何使用? 解决方案 context参数只是设置迭代器函数中this的值. var someOtherArray = ["name","patrick","d","w"];_.each([1, 2, 3], function(num) {//在这里,“this"和“someOtherAr
..
使用 ES5,你如何对一个带有无限参数的函数进行柯里化. function add(a, b, c) {返回 a + b + c;} 上面的函数只接受三个参数,但我们希望柯里化版本能够接受无限个参数. 因此,以下所有测试用例都应该通过: var test = add(1);测试(2);//应该返回3测试(2,3);//应该返回6测试(4,5,6);//应该返回16 这是我想出的解决方
..