数码资讯
javascript函数编程实例分析
本文介绍了javascript函数编程,供大家参考,具体分析如下: js和其他动态语言一样,可以编写高阶函数,所谓的高阶函数是可以操作的函数,因为js中的函数是一个彻底的对象,属于第一类的公民,这为函数式编程提供了前提。 下面是js教程中的一个代码示例,它用于计算数组元素的平均值和标准偏差。首先,列
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
本文介绍了javascript函数编程,供大家参考,具体分析如下:
js和其他动态语言一样,可以编写高阶函数,所谓的高阶函数是可以操作的函数,因为js中的函数是一个彻底的对象,属于第一类的公民,这为函数式编程提供了前提。
下面是js教程中的一个代码示例,它用于计算数组元素的平均值和标准偏差。首先,列出了非功能性编程的一种编写方法。
VaR数据= { 1,1,3,5,5 };
var总= 0;
对于(var i = 0;i < data.length;i++)
总计=数据{ };
VAR平均总 / / / data.length;平均数是3
计算标准偏差
总数= 0;
对于(var i = 0;i < data.length;i++){
var偏移量=数据{ } -平均值;
塔塔尔=偏差*偏差;
}
Var StdDev =数学。Sqrt(总/(数据。length-1)); / /标准差为2
为了使用功能的编程,可以预定义函数的一些帮助(辅助功能):
将转换为真实对象数组数组
函数数组(a,n){
返回array.prototype.slice.call(A,N | | 0);
}
函数参数传递到左边。
功能partial_left(F){
var args =参数;
返回函数(){
声明一个数组(一,1);
a a.concat(阵列(参数));
返回f.apply(这一);
};
}
传递给函数/右的参数
功能partial_right(F){
var args =参数;
返回函数(){
数组(参数);
a a.concat(阵列(一,1));
返回f.apply(这一);
};
}
这个函数参数用作模板,
参数列表中未定义的值将是实际的参数值填充。
函数部分(f){
var args =参数;
返回函数(){
声明一个数组(一,1);
var i = 0,j = 0;
为(;;i < a.length;i++)
如果(未定义的)
{参数} { } + };
a a.concat(阵列(参数,J));
返回f.apply(这一);
};
}
返回一个类似于f((g))的函数
函数组合(f,g){
返回函数(){
返回f.call(这g.apply(这个参数));
};
}
下面我们给出js代码,它是全功能的编程:
VaR数据= { 1,1,3,5,5 };
函数(x,y){返回x;y;};
var产品=函数(x,y){返回x;y;};
无功负=部分(产品1);
VaR的平方=部分(math.pow,定义,2);
VaR表示部分(math.pow,定义,0.5);
VaR的倒数=部分(math.pow,定义,1);
嗯,鸟的高潮:
var =产品(减少(数据,和),倒数(数据长度));
Var StdDev = sqrt (product (map) (data, compose (square, partial (sum, NEG)))))
除了减函数和map函数外,其他函数也在前面给出,与露比中的注入函数类似:
元=(1。10)。to_a
ary.inject(0){ |总和,我|总和+我} / 55的结果
js的编写如下:
VaR元= { 1,2,3,4,5,6,7,8,9,10 }
Ary.reduce(功能(和我){
返回和;
},0);
0求和的初始值,如果省略,求和是数组的第一个元素的值,可以省略。
map函数也非常简单,类似于与数组中的每个元素一起工作,然后在操作之后返回数组。以Ruby代码为例,js代码与此类似。
=(1。3)。to_a;#阵列{1,2,3}
a.map { 2 } | | X X #返回数组} { 2
现在让我们分析长串代码:
求和乘积定义加和乘元素的函数。
不也是一个功能相当于:产品(1,X),即x的值是负的;
广场的功能相当于Math.pow(x,2),这是计算x的平方值,说明部分的第二个参数是不确定的,这意味着参数填充第一个真正的参数。此外,很显然,广场(x)函数等于math.pow(x,2)。
sqrt函数类似于广场,功能相当于:Math.pow(x,0.5),相当于两倍的X.开口
最后一个函数,倒数,不是很难,相当于:Math.pow(x,1),即计算X的消极的一面,相当于x计算的倒数
以下是如何将上述功能揉在一起:
平均值第一的计算很简单:首先计算数组元素的和,然后乘以数组长度的倒数,也就是数组和数组长度。
最后,它看起来像一个困难的标准偏差。我们最好从内到外看。
查看包含负一层:
等于函数和(- 1×平均x)
部分(金额、NEG(平均))
接下来,看看组合函数:
下面的源代码中的问题处理,可以相当于:
平方(和(- 1×平均x)),再次展开(我削皮,剥皮,剥洋葱……):
/ / math.pow(SUM(1×平均+ x),2);
组合(平方和,(- 1×平均x))
接下来,映射函数:
!也就是说,数据中的每个元素都是x,并且在它之后被传递到函数中。然后返回计算后的新数组,即新数组中的每个元素都是数据中的元素,加上数据减去平均值,然后计算其结果的2个功率的结果。
(资料图,Math.pow(SUM(1×平均+ x),2))
然后看地图外的减函数:
在新数组值前面添加的每个元素。
减少(map(…),和)
然后看看倒数函数:
/ /相当于(数据。length-1)倒计时
倒数(sum(data.length,- 1))
看看外层的产品功能。
相当于新 / /数组元素除以(数据。length-1)
产品(减(…),互惠(…))
最外层的平方根上面说的划分结果;我们可以在非功能性编程代码前控制它,都是一样的:降)的一大堆看似漂亮的代码恐惧,分析后立即接近零的难度。如果你最后说还是不明白,这是猫的语言的能力,欢迎提问。
之后,关闭后,完成。
希望本文能对大家的javascript程序设计有所帮助。
js和其他动态语言一样,可以编写高阶函数,所谓的高阶函数是可以操作的函数,因为js中的函数是一个彻底的对象,属于第一类的公民,这为函数式编程提供了前提。
下面是js教程中的一个代码示例,它用于计算数组元素的平均值和标准偏差。首先,列出了非功能性编程的一种编写方法。
VaR数据= { 1,1,3,5,5 };
var总= 0;
对于(var i = 0;i < data.length;i++)
总计=数据{ };
VAR平均总 / / / data.length;平均数是3
计算标准偏差
总数= 0;
对于(var i = 0;i < data.length;i++){
var偏移量=数据{ } -平均值;
塔塔尔=偏差*偏差;
}
Var StdDev =数学。Sqrt(总/(数据。length-1)); / /标准差为2
为了使用功能的编程,可以预定义函数的一些帮助(辅助功能):
将转换为真实对象数组数组
函数数组(a,n){
返回array.prototype.slice.call(A,N | | 0);
}
函数参数传递到左边。
功能partial_left(F){
var args =参数;
返回函数(){
声明一个数组(一,1);
a a.concat(阵列(参数));
返回f.apply(这一);
};
}
传递给函数/右的参数
功能partial_right(F){
var args =参数;
返回函数(){
数组(参数);
a a.concat(阵列(一,1));
返回f.apply(这一);
};
}
这个函数参数用作模板,
参数列表中未定义的值将是实际的参数值填充。
函数部分(f){
var args =参数;
返回函数(){
声明一个数组(一,1);
var i = 0,j = 0;
为(;;i < a.length;i++)
如果(未定义的)
{参数} { } + };
a a.concat(阵列(参数,J));
返回f.apply(这一);
};
}
返回一个类似于f((g))的函数
函数组合(f,g){
返回函数(){
返回f.call(这g.apply(这个参数));
};
}
下面我们给出js代码,它是全功能的编程:
VaR数据= { 1,1,3,5,5 };
函数(x,y){返回x;y;};
var产品=函数(x,y){返回x;y;};
无功负=部分(产品1);
VaR的平方=部分(math.pow,定义,2);
VaR表示部分(math.pow,定义,0.5);
VaR的倒数=部分(math.pow,定义,1);
嗯,鸟的高潮:
var =产品(减少(数据,和),倒数(数据长度));
Var StdDev = sqrt (product (map) (data, compose (square, partial (sum, NEG)))))
除了减函数和map函数外,其他函数也在前面给出,与露比中的注入函数类似:
元=(1。10)。to_a
ary.inject(0){ |总和,我|总和+我} / 55的结果
js的编写如下:
VaR元= { 1,2,3,4,5,6,7,8,9,10 }
Ary.reduce(功能(和我){
返回和;
},0);
0求和的初始值,如果省略,求和是数组的第一个元素的值,可以省略。
map函数也非常简单,类似于与数组中的每个元素一起工作,然后在操作之后返回数组。以Ruby代码为例,js代码与此类似。
=(1。3)。to_a;#阵列{1,2,3}
a.map { 2 } | | X X #返回数组} { 2
现在让我们分析长串代码:
求和乘积定义加和乘元素的函数。
不也是一个功能相当于:产品(1,X),即x的值是负的;
广场的功能相当于Math.pow(x,2),这是计算x的平方值,说明部分的第二个参数是不确定的,这意味着参数填充第一个真正的参数。此外,很显然,广场(x)函数等于math.pow(x,2)。
sqrt函数类似于广场,功能相当于:Math.pow(x,0.5),相当于两倍的X.开口
最后一个函数,倒数,不是很难,相当于:Math.pow(x,1),即计算X的消极的一面,相当于x计算的倒数
以下是如何将上述功能揉在一起:
平均值第一的计算很简单:首先计算数组元素的和,然后乘以数组长度的倒数,也就是数组和数组长度。
最后,它看起来像一个困难的标准偏差。我们最好从内到外看。
查看包含负一层:
等于函数和(- 1×平均x)
部分(金额、NEG(平均))
接下来,看看组合函数:
下面的源代码中的问题处理,可以相当于:
平方(和(- 1×平均x)),再次展开(我削皮,剥皮,剥洋葱……):
/ / math.pow(SUM(1×平均+ x),2);
组合(平方和,(- 1×平均x))
接下来,映射函数:
!也就是说,数据中的每个元素都是x,并且在它之后被传递到函数中。然后返回计算后的新数组,即新数组中的每个元素都是数据中的元素,加上数据减去平均值,然后计算其结果的2个功率的结果。
(资料图,Math.pow(SUM(1×平均+ x),2))
然后看地图外的减函数:
在新数组值前面添加的每个元素。
减少(map(…),和)
然后看看倒数函数:
/ /相当于(数据。length-1)倒计时
倒数(sum(data.length,- 1))
看看外层的产品功能。
相当于新 / /数组元素除以(数据。length-1)
产品(减(…),互惠(…))
最外层的平方根上面说的划分结果;我们可以在非功能性编程代码前控制它,都是一样的:降)的一大堆看似漂亮的代码恐惧,分析后立即接近零的难度。如果你最后说还是不明白,这是猫的语言的能力,欢迎提问。
之后,关闭后,完成。
希望本文能对大家的javascript程序设计有所帮助。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。