帮你精通JavaScript:匿名函数解决“不得不”的问题

帮你精通JavaScript:匿名函数解决“不得不”的问题

上一节 帮你精通JavaScript:简单求积分的方法 中,我们分享了应用抽象的sum函数近似求pi值的方法:

帮你精通JavaScript:匿名函数解决“不得不”的问题

求pi的序列

function pi_sum(a, b) {
    function pi_term(x) {
        return 1 / (x * (x+2));
    }
    function pi_next(x) {
        return x + 4;
    }
    return sum(pi_term, a, pi_next, b);
}
//该函数收敛于pi/8

此案例中,我们不得不一本正经的写出两个“微不足道”的函数的定义,pi_term与pi_next,只为能在sum函数中顺利的调用。如果不繁琐费力的逐个定义,而只用其数学关系,岂不妙哉。

Lambda-Expression应运而生,pi_term与pi_next可被直接写为:

x => x + 4 //pi_next
x => 1 / (x * (x + 2)) //pi_term

此语法简洁优美,输入 x 然后输出所得值,用lambda-function重新撰写pi_sum函数:

function pi_sum(a, b) {
    return sum(x => 1 / (x * (x + 2)),
               a,
               x => x + 4,
               b);
}

匿名函数的语法为:

(parameters => expression)

匿名函数与define的函数是等效的, 比如:

function plus4(x) {
  return x + 4;
}
//等效于
const plus4 = (x => x + 4); //加上括号,视觉上更加清晰

函数的调用也是相同的:

((x, y, z) => x + y + square(z))(1, 2, 3);

从直觉上,我们可以将lambda-function的语法逐步拆解:

//常规函数
function (a){
  return a + 100;
}

// 匿名函数分步拆解

// 1. 去掉function关键字,引入arrow =>
(a) => {
  return a + 100;
}

// 2.去掉关键字return
(a) => a + 100;

// 3. 最后去掉()
a => a + 100;
展开阅读全文

页面更新:2024-06-04

标签:函数   括号   应运而生   近似   繁琐   序列   微不足道   正经   抽象   语法   所得   直觉   关键字   定义   方法

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top