最新要闻

广告

手机

光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯

光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯

搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注

搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注

家电

js的中的函数(一)

来源:博客园

函数的定义

函数本质上是自变量和因变量之间关系的一种抽象描述,在JavaScript中我们这样定义一个函数:

function add(a,b){      return a + b;  }

上述add函数的定义如下:


(资料图片)

  • function指出这是一个函数定义;
  • add是函数的名称;
  • (a,b)括号内列出函数的参数,多个参数以,分隔;
  • { ... }之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。

请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。 如果没有return语句,函数执行完毕后也会返回结果,只是结果为undefined。

还有另外一种定义函数的方式:

var add = function(a,b){      return a + b;  }                

上述代码所示,function(){...}函数是一个匿名函数。将一个匿名函数赋值给一个变量,我们就可以使用它对函数进行调用。两种定义函数的方法是 等价的。

arguments

在函数体的内部,我们可以通过一个内置的arguments关键字查看函数被调用时的所有参数。

function getArgs(a,b){      //只有a,b接收到了参数      console.log(a,b);      for (let arg of arguments){          console.log("arg:",arg);       }  }  getArgs(2,4,6); //参数a等于2,参数b等于4,arguments 包含2,4,6  getArgs(2);   //参数a等于2,参数b等于undefined,arguments 只有2

可变参数

如果函数接收的参数列表长度是不确定的,我们可以引入一个可变参数接收,方便对参数的操作

function getVarArgs(a,b,...rest){      console.log(a,b);      if (rest){          for (let item of rest){              console.log(item)          }      }  }  getVarArgs(11,14);  getVarArgs(11,14,17,18);

上述代码所示,如果a,b参数是确定的,而后续的参数是不确定的,就可以用...rest的可变参数进行接收。在函数体内部rest可以看成是一个数组, 操作非常方便。

高阶函数

定义函数的时候,我们把匿名函数赋值给了一个变量。实际上,在JavaScript中,我们可以把一个函数等同于一个变量看待。在定义函数的时候,函数的参数可以接收一个变量,当然也可以接收另外一个函数作为它的参数。我们 把这个接收函数参数的函数称为高阶函数。这个定义听起来似乎有些拗口,请看如下示例:

function add(a,b,func){      return func(a) + func(b);  }  add(-10,2,Math.abs);  //返回12

上述代码中,add就是一个高阶函数,它接收两个数字和一个函数。

map()

JavaScript中,绑定到对象上的函数我们通常成为方法。map()作为数组的一个映射方法,实际上是一个函数,它可以接收一个函数作为参数。

// 映射函数  var array = [3,6,7,8,9];  var r = array.map(function(x){      return x*x;  })  r;  //返回[9,36,49,64,81]

上述代码所示,数组的map方法接收了一个函数,这个函数的功能是接收一个数字,经过处理再输出这个数字的平方。

reduce()

reduce()是数组的一个聚合方法,它将数组所有的元素进行聚合。

var array = [3,6,7,8,9];  var r = array.reduce(function(s,x){      return s = s + x;  },0)  r;  //返回 33

上述代码显示,数组的reduce方法接收了一个函数,这个函数的第一个参数是聚合的结果,第二个参数是数组的元素。reduce方法的另一个参数表示聚合的初始值,可省略,默认为0。

filter()

filter()是数组的一个过滤方法,他将数组的所有元素按给定的规则进行过滤。

var array = [3,6,7,8,9];  var r = array.filter(function(x){      return x>6;  });  r;  //返回[7,8,9]

sort()

sort()是数组的一个排序方法,它将数组的所有元素按给定的规则进行排序。

var r = ["1.81","1.78","1.83","1.75","1.86","1.72"];  r.sort(function(a,b){      return parseFloat(a)-parseFloat(b);  })  r; //返回["1.72","1.75","1.78","1.81","1.83","1.86"]

上述代码显示,sort方法接收了一个比较函数。

find()

find()是数组的一个查找方法,它查询数组中满足给定条件的第一个元素

var array = [3,6,7,8,9];  var r = array.find(function(x){      return x>7;  })  r;  //8

其它

findIndex()查询数组中满足给定条件的第一个元素的索引,every()确定数组中的所有元素是否满足给定条件

var array = [3,6,7,8,9];  var r = array.findIndex(function(x){      return x>7;  })  r; //3  var r1 = array.every(function(x){      return x > -2 ;  });  r1; //true;

文章同时发表在:码农编程网欢迎访问

本节重点:

  • js函数的定义
  • 什么是高阶函数,高阶函数的定义和使用;
  • 常见的高阶函数和应用。

关键词: