美文网首页
53.2-匿名函数和高阶函数

53.2-匿名函数和高阶函数

作者: BeautifulSoulpy | 来源:发表于2020-05-21 10:15 被阅读0次

生活挺美好的,越努力越美好。因为还有很多:要认识的人,要看的风景,要去的城市,要买的东西!

总结:

  1. 函数是一等公民;函数会声明提升,函数表达式不会;要用 先定义,按规范来写;
  2. for -of 取内容,for in 取索引;
JS语法
function 函数名(参数列表) {
    函数体;
    return 返回值;
}

function add(x, y) {
    return x + y;
}
console.log(add(3, 5));

1. 函数表达式

使用表达式来定义函数,表达式的函数名称可以省略,如果这个函数名称不省略,也只能用在此函数内部;

// 匿名函数
const add = function(x, y) {      // 将函数赋值给add ;
    return x + y;
}
console.log(add(4,5))   

// 有名字的函数表达
const sub = function fn(x,y) {
    return x - y;
};
console.log(sub(5, 3));
//console.log(fn(3, 2)); // fn只能用在函数内部

// 有名字的函数表达式
const sum = function _sum(n) {  
    if (n == 1) return n;
    return n + _sum(--n) // _sum只能内部使用
}
console.log(sum(4));

2. 函数、匿名函数、函数表达式的差异

函数和匿名函数,本质上都是一样的,都是函数对象,只不过函数有自己的标识符——函数名,匿名函数需要借助其它的标识符而已。
区别在于,函数会声明提升,函数表达式不会

// 函数的声明 提升 ,可以先放到 前面
console.log(sum(4))
function sum(n) {
    if (n==1) return 1;
    return n+sum(--n);
}

// 匿名函数
function add (x, y){ // 声明提升
    return x + y;
};
//console.log(sub(5, 3)); //sub未定义
// 有名字的函数表达式
const sub = function (x, y){
    return x - y;
};
console.log(sub(5, 3));

3. 高阶函数

高阶函数:函数作为参数或返回一个函数
完成一个计数器counter

function counter () {
    let c = 0;
    return function(){
        return ++c
    };
};

const c = counter()

console.log(c())
console.log(c())
console.log(c())
#-------------------------------------------------------
1
2
3


// 生成器版本:
function *counter() {
    let c = 0;
    while (1)
        yield ++c;
}

const inc = counter() ; // 生成器对象;
console.log(inc.next())
console.log(inc.next().value) //
console.log(inc.next().value)
#----------------------------------------------------------------
{ value: 1, done: false }
2
3
map函数

完成一个map函数:可以对某一个数组的元素进行某种处理

// ES 262
function map(fn, arr) {
    let newarr = [];
    for (let i=0;i<arr.length;i++) 
        newarr[i] = fn(arr[i])
    return newarr;
}
console.log(map(x => x+10,[1,2,3,4]))
console.log(map(function(x){return x+10},[1,2,3,4]))
#--------------------------------------------------------------------------------------------
[11,12,13,14]

map的生成器实现

var map = function* (fn, arr){
    for (i in arr) 
        yield fn(arr[i]);
};

let newarr = map(x => x + 10, [1, 2, 3, 4]);

for (x of newarr)
    console.log(x);

相关文章

  • 53.2-匿名函数和高阶函数

    生活挺美好的,越努力越美好。因为还有很多:要认识的人,要看的风景,要去的城市,要买的东西! 总结:函数是一等公民;...

  • Kotlin学习之高阶函数和Lambda表达式:函数类型和匿名函

    Kotlin学习之高阶函数和Lambda表达式:函数类型和匿名函数 高阶函数是参数或返回值包含函数的函数,Lamd...

  • 函数

    本节学习几种函数 匿名函数 高阶函数 闭包 头等函数的作用 匿名函数 什么是匿名函数? 通俗的讲就是没有函数名的函...

  • wangyanhua--python2

    基本函数的使用 匿名函数 常用系统高阶函数 高阶函数 常用系统高阶函数 Python递归 安装第三方库 三国小说人...

  • Python高阶函数和匿名函数

    map() map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个...

  • 高级语法

    高阶函数:以其他函数作为其参数或者返回值的函数。跟JS一样,python提供了部分内置高阶函数 匿名函数:pyth...

  • Python语言学习笔记

    高阶函数:将函数作为参数传递匿名函数lambdaosargparsepsutilsys装饰器:(同类或无类前提)调...

  • Python ☞ day 4

    Python学习笔记之 (set)集合 & 迭代器 & 函数 & 匿名函数 & 高阶函数 set set:类似di...

  • 10-python中匿名函数

    高阶函数可以接收函数做参数,有些时候,我们不需要显式地定义函数,直接传入匿名函数更方便。 在Python中,对匿名...

  • 函数进阶_2

    目录 常用内置函数 匿名函数 高阶函数 闭包 装饰器 1. 常用内置函数 1.1 range()函数 语法:ran...

网友评论

      本文标题:53.2-匿名函数和高阶函数

      本文链接:https://www.haomeiwen.com/subject/pymaohtx.html