首页  >  文章  >  web前端  >  理解 JavaScript 中的高阶函数

理解 JavaScript 中的高阶函数

DDD
DDD原创
2024-11-20 11:39:46961浏览

Razumevanje funkcija višeg reda (Higher-Order Functions) u JavaScript-u

如果您正在学习 JavaScript,您可能遇到过术语高阶函数。虽然听起来很复杂,但其实并没有那么复杂。 JavaScript 作为一种函数式编程语言,允许使用这些函数,这在基于函数的编程中至关重要。

函数式编程

函数式编程意味着创建和使用函数作为主要构建块。在这种方法中,函数可以作为参数传递给其他函数或作为结果返回。这种思维方式可以让代码编写变得有条理、高效。

一流的功能

JavaScript 将函数视为“一等公民”。这意味着函数是对象——一种特定类型的对象,可以分配给变量、作为参数传递并在不同的上下文中使用,例如数字或字符串。

示例

function pozdrav() {
  console.log('Zdravo, svete!');
}
pozdrav();  // Ispisuje 'Zdravo, svete!'

// Dodavanje svojstva funkciji
pozdrav.jezik = 'srpski';
console.log(pozdrav.jezik); // Ispisuje 'srpski'

将函数分配给变量

在 JavaScript 中,可以将函数赋值给变量:

const kvadrat = function(x) {
  return x * x;
};
console.log(kvadrat(5));  // Ispisuje 25

将函数作为参数传递

一流函数的主要功能之一是能够将它们作为参数传递给其他函数:

function formalniPozdrav() {
  console.log("Kako ste?");
}
function neformalniPozdrav() {
  console.log("Šta ima?");
}
function pozdravVrsta(vrsta, formalan, neformalan) {
  if (vrsta === 'formalan') {
    formalan();
  } else if (vrsta === 'neformalan') {
    neformalan();
  }
}
pozdravVrsta('neformalan', formalniPozdrav, neformalniPozdrav);  // Ispisuje 'Šta ima?'

高阶函数

高阶函数是接受其他函数作为参数或将它们作为结果返回的函数。这使得代码编写更加优雅和简洁。示例包括map、filter和reduce.

方法

地图方法

map 通过对现有数组的每个元素调用函数来创建一个新数组:

无地图方法:

const arr1 = [10, 20, 30, 40, 50];
const arr2 = [];
for (let i = 0; i < arr1.length; i++) {
  arr2.push(arr1[i] * 2);
}
console.log(arr2);  // [20, 40, 60, 80, 100]

使用地图方法:

const arr1 = [10, 20, 30. 40, 50];
const arr2 = arr1.map(item => item * 2);
console.log(arr2);  // [20, 40, 60, 8-, 100]

过滤法

过滤器创建一个新数组,其中包含满足给定条件的所有元素:

const osobe = [
  { ime: 'Pera', godine: 13 },
  { ime: 'Mika', godine: 18 },
  { ime: 'Laza', godine: 64 },
  { ime: 'Ana', godine: 10 },
];
const punoletni = osobe.filter(osoba => osoba.godine >= 18);
console.log(punoletni);  // [ { ime: 'Mika', godine: 18 }, { ime: 'Laza', godine: 64 } ]

减少方法

reduce 对数组的每个成员执行函数并返回唯一值:

reduce 示例:

const arr = [4, 6, 10, 5, 25];
const suma = arr.reduce((akumulator, vrednost) => akumulator + vrednost, 0);
console.log(suma);  // 50

创建高阶函数

想象一下如果 JavaScript 没有内置的 map 方法。我们可以自己创建:

function mapiraj(arr, fn) {
  const noviNiz = [];
  for (let i = 0; i < arr.length; i++) {
    noviNiz.push(fn(arr[i]));
  }
  return noviNiz;
}
const duzine = mapiraj(['JavaScript', 'Python'], item => item.length);
console.log(duzine);  // [10, 6]

结论

高阶函数使 JavaScript 代码具有灵活性和简单性。通过使用这些功能,我们的代码变得更加简洁、有组织、可维护。

以上是理解 JavaScript 中的高阶函数的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn