强调function_动力节点java所整理

强调function_动力节点java所整理
因为下划线旨在充分发挥Javascript的函数编程特性,它还提供了Javascript所没有的大量高级函数。

绑定

绑定()有什么用途让我们来看一个常见的误用:
严格使用;
console.log(你好,世界!!);
/ / output'hello,世界!
var日志= console.log;
日志(你好,世界!!);
TypeError:非法调用 / /捕获
如果你想更换console.log()日志(),这是不可接受的根据上面的练习,因为这个指针直接调用日志()是未定义的,必须使用。
严格使用;
var日志= console.log;
调用并将控制台对象传递为:
log.call(控制台,你好,世界!)
输出hello,世界!
那有很多麻烦!它的更好的使用console.log()直接。然而,绑定()可以帮助我们把控制台对象直接到this指针的日志(),然后调用日志()可以直接调用。
严格使用;
var日志= _绑定(console.log,控制台);
日志(你好,世界!!);
输出hello,世界!
部分

部分()是为函数创建一个局部函数。看看例子:

假设我们要计算XY,我们只需要打电话给Math.pow(x,y)。

假设我们经常计算2Y之,每次写Math.pow(2,Y)是比较麻烦,如果你创建一个新的功能,可以直接写pow2n(Y)是好的,这个新功能是基于pow2n(Y)math.pow(x,y)的部分功能,它固定第一的原函数的一个参数(总2):
严格使用;
无功pow2n = _部分(math.pow,2);
pow2n(3 / 8);
pow2n(5 / 32);
pow2n(10 / 1024);
如果我们不想修复第一个参数,你想修复第二个参数吗例如,你想创建多维数据集的一部分功能(x),计算X3,可以用作一个占位符_,固定二参数:
严格使用;
VaR的立方体= _。部分(math.pow,_,3);
多维数据集(3 27);
多维数据集(5 125);
多维数据集(10 1000);
可以看出,创建部分函数的目的是修正原函数的某些参数,从而减少新函数调用的难度。

memoize

如果函数调用是昂贵的,我们可能希望能够缓存结果,以便在调用之后可以直接得到结果:
严格使用;
函数阶乘(n){
console.log(开始计算+ N +'!);
var = 1,i = n;
当(i>1){
S = i;
-我;
}
console.log(N +!=+;
返回的;
}
阶乘(10 3628800);
注释/控制台输出:
开始/计算10!…
/ 10 = 3628800!
memoize()可以自动缓存的函数计算结果:
严格使用;
VAR因子= _。memoize(功能(N){)
console.log(开始计算+ N +'!);
var = 1,i = n;
当(i>1){
S = i;
-我;
}
console.log(N +!=+;
返回的;
});
第一个调用:
阶乘(10 3628800);
注释/控制台输出:
开始/计算10!…
/ 10 = 3628800!
第二次调用:
阶乘(10 3628800);
无输出/控制台
对于同样的电话,如因连续两个电话(10),第二呼叫不算数,而是直接返回缓存的结果最后计算后。然而,当你计算因子(9),你仍然可以重新计算它。

可以对阶乘()进行改进,使其递归调用:
严格使用;
VAR因子= _。memoize(功能(N){)
console.log(开始计算+ N +'!);
如果(n<2){
返回1;
}
返回n *阶乘(n - 1);
});
阶乘(10 3628800);
输出/结果表明阶乘(1)阶乘(10)已经被缓存:
开始/计算10!…
开始/计算9!…
开始/计算8!…
开始/计算7!…
开始/计算6!…
开始/计算5!…
开始/计算4!…
开始/计算3!…
开始/计算2!…
开始/计算1!…
阶乘(9 362880);
无输出控制台
一旦

顾名思义,一次()保证一个函数只执行一次,如果你有一个叫做寄存器()的方法,如果你执行页面上两个按钮中的任意一个,你可以使用一次()保证函数只调用一次,不管用户点击多少次。
严格使用;
var = _登记。一旦(function()){
警报(寄存器好!;
});
测试结果:
寄存器();
寄存器();
寄存器();

延迟

Delay()可以让一个函数被推迟,而效果是一样的,但是setTimeout()的代码很简单:
严格使用;
2秒后调用警报():
_延迟(报警,2000);
如果函数有一个参数来延迟调用,参数也将传递进来:
严格使用;
var日志= _绑定(console.log,控制台);
_。延迟(日志,2000,你好,',‘!);
/ / 2秒后print'hello,世界!:
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部