TypeScript 之 Lambda 函数

news2024/11/28 10:56:48

本文作者为 360 奇舞团前端开发工程师

TypeScript 之 Lambda 函数

Lambda 函数 又称箭头函数

箭头函数表达式语法比函数表达式语法更简短,并且没有自己的this,arguments,super或new.target。箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。

ES6版本的TypeScript 提供的箭头函数,是定义匿名函数的简写语法,用于函数表达式,省略了function关键字。箭头函数具有this 关键的语法作用。

箭头函数的作用

  • 当我们不需继续输入功能;

  • 它从词汇上捕捉这个关键字的含义;

  • 它从词汇上抓住了参数的意义。

语法

可以分三部分

  • 参数:函数可以有参数,也可以没有参数

  • 箭头符号:=>

  • 语句:表示函数的指令集

如果用箭头函数表示法,就不需要使用function 关键字。参数在()中传递,函数表达式在{}中。

基础语法

(param1, param2, ..., paramN) => { statements }
(param1, param2, ..., paramN) => expression
//当只有一个参数时,圆括号可以省略,可选的
(singleParam) => { statements }
//省略圆括号
singleParam => { statements }
//没有参数的函数应该写成一对圆括号
() => { statements }

ES6 提供了其它写匿名函数的方式,语法糖。

//sum 是一个箭头函数, a、b 是参数,a、b后面的:number 是参数类型   : number 是返回类型
箭头符号分隔了函数参数和函数体
const sum = (a: number,b: number): number => {
  return a+b;
}
 console.log(sum(20,30))// return 50

当不需要函数体,只返回一个值当时候,可省略return 关键字和外面的花括号。

const fun = () => 'value';

类中箭头函数使用

class Student {
    stucode: number
    stuname: string
    //构造函数  构造Student对象
    constructor (code: number, name: string) {
        this.stucode = code
        this.stuname =name
    }
    studetail = () => {
      console.log('stucode:' + this.stucode + '\nstunam:' + this.stuname )
    }
}

export { Student }

import { Student } from '@/views/Student'

 let stu = new Student(100, 'jorn')
 stu.studetail()

带参数的箭头函数

const fun = (item: number ) => item*2;
//当只有一个参数时候,可以省略参数外面的括号
const fun = item => item*2;
//多个参数传递
const fun = (item: number,item1: number, item2: boolean) => {
let value;
if(item2){
 item++;
 value= item;
}else {
item1 ++;
value = item1;
}
  return  value;
}

箭头函数 不能用作构造器,和new 一起用会抛出错误。也没有prototype 属性。yield 关键字通常不能在箭头函数中使用(除非是嵌套在允许使用的函数内)。因此,箭头函数不能用作函数生成器。

函数体

箭头函数可以有一个"简写体"或常见的“块体”

//简写函数 省略 return
var func = x => x+x ;
//常规写法
var func = (x,y) => { return x+y; };

返回对象字面量

记住用 params => {object: literal}这种简单的语法返回对象字面量是行不通的。

// 下面这样行不通
var func =  () => { foo: 1 };

var func = () => { foo: function() {} };

这是因为花括号({})里面的代码被解析位一系列语句(即foo 被认为是一个标签,而非对象字面量的组成部分)。所以,记得用圆括号把对象字面量包起来。

var func = () => ({foo: 1});

换行

箭头函数在参数和箭头之间不能换行。

不可以写成下面的,这样是错误的

var func = ()
=> 1;

但是,可以在‘=>'之后换行

var func = (a,b,c) =>
{
1;
}

箭头函数也可以使用闭包

//标准的闭包函数
function A(){
    var i=0;
    return function b(){
    return (++i);
    };
};

var v =A();
v();//1
v();//2

// 箭头函数体的闭包(i=0 是默认参数)
var Add = (i=0) => { return (() => (++i) )};
var v = Add();
v();//1
v();//2

因为只有一个返回值,return 及括号() 也可以省略
var Add = (i=0) => () => (++i);

- END -

关于奇舞团

奇舞团是 360 集团最大的大前端团队,代表集团参与 W3C 和 ECMA 会员(TC39)工作。奇舞团非常重视人才培养,有工程师、讲师、翻译官、业务接口人、团队 Leader 等多种发展方向供员工选择,并辅以提供相应的技术力、专业力、通用力、领导力等培训课程。奇舞团以开放和求贤的心态欢迎各种优秀人才关注和加入奇舞团。

5ffac450f447525cf04be41cb26c9b00.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/550847.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

揭秘物联网平台设备管理核心!Java代码示例对比,一篇文章全知道!

《高并发系统实战派》-- 值得拥有 一、 设备管理模块的意义 设备管理模块是物联网平台的核心模块之一,主要负责设备的接入、注册、管理、监控等工作,是构建物联网平台的基础。通过设备管理模块,可以实现对设备的资源动态管理、设备状态实时…

哈希环如何用在直播调度系统

背景 直播CDN系统通常用L1或者L2的缓存集群,缓解中心服务器压力。缓存集群需要满足2个条件 写:同一份数据写在一台缓存CDN服务器上,至少是同一节点上;读:对于这份数据的读取,能尽快索引到缓存CDN服务器上…

[CTF/网络安全] 攻防世界 baby_web 解题详析

[CTF/网络安全] 攻防世界 baby_web 解题详析 index.html & default.htmlindex.phpHTTP 302总结 题目描述:想想初始页面是哪个 index.html & default.html 初始页面的文件名一般为 index.html 或 default.html。这两个文件名都是 Web 服务器默认的首选文件…

shell编程--变量

变量 在shell中用户可以建立变量来存储数据,但不支持数据类型,变量名命名规则:数字、字母、下划线,不能以数字开头。 环境变量 当前shell的环境设置的一些变量 ​ export—设置新的环境变量 ​ env—显示所有环境变量 ​ set—…

Codeforces Round 874 (Div. 3)

作者:指针不指南吗 专栏:codeforces 🐾或许会很慢,但是不可以停下来🐾 文章目录 A. Musical PuzzleB. Restore the WeatherC. Vlad Building Beautiful Array A. Musical Puzzle Problem - 1833A - Codeforces 题意 …

<Python实际应用>做一个简单的签到投屏系统

公司接了个活,承办一个由团委组织的五四青年节徒步活动,其中一个环节是现场报名,来的人把名字填进去后随机分组,并显示在现场的LED大屏幕上,我自告奋勇用Python来开发这个小程序。这里记录一下 【项目需求】 1、报名…

数据结构初阶(3)(链表:链表的基本概念、链表的类型、单向不带头非循环链表的实现、链表的相关OJ练习、链表的优缺点 )

接上次博客:和数组处理有关的一些OJ题;ArrayList 实现简单的洗牌算法(JAVA)(ArrayList)_di-Dora的博客-CSDN博客 目录 链表的基本概念 链表的类型 单向、不带头、非循环链表的实现 遍历链表并打印节点值: 在链…

华为OD机试真题 Java 实现【关联端口组合并】【2023Q1 100分】

一、题目描述 有M (1<M<10)个端口组&#xff0c;每个端口组是长度为N(1<N<100)的整数数组&#xff0c;如果端口组间存在2个及以上不同端口相同&#xff0c;则认为这两个端口组互相关联&#xff0c;可以合并。 第一行输入端口组个数M&#xff0c;再输入M行&#x…

Faster-RCNN网络详解

文章目录 一、前言二、Faster-RCNN算法原理2.1.RPN结构2.1.1感受野的计算与候选框的生成2.1.2正负样本 2.2.RPN的损失计算2.2.1对于分类损失2.2.2.边界回归参数 2.3.Fast-RCNN损失2.4.整体训练 三、总结四、参考博客、视频、论文地址4.1.B站优质UP视频4.2.系类论文地址4.3.个人…

windows11下系统睡眠状态被UpdateOrchestrator唤醒的解决方案

windows11下系统睡眠状态被UpdateOrchestrator唤醒的解决方案 一、问题排查二、问题解决 一、问题排查 最近win11更新后发现会偶尔在睡眠状态下唤醒&#xff0c;CMD中输入powercfg -lastwake命令可以查看唤醒源程序 这里显示唤醒是按下了电源按钮&#xff0c;符合我此次唤醒操…

论文阅读_语音合成_VALLE-X

论文信息 name_en: Speak Foreign Languages with Your Own Voice: Cross-Lingual Neural Codec Language Modeling name_ch: 用你自己的声音说外语&#xff1a;跨语言神经编解码器语言建模 paper_addr: http://arxiv.org/abs/2303.03926 date_read: 2023-04-25 date_publish:…

【Hadoop】一、Apache Hadoop、 HDFS

一、Apache Hadoop、 HDFS 1、Apache Hadoop概述 Hadoop介绍 狭义上Hadoop指的是Apache软件基金会的一款开源软件。 用java语言实现&#xff0c;开源 允许用户使用简单的编程模型实现跨机器集群对海量数据进行分布式计算处理 Hadoop核心组件 Hadoop HDFS&#xff08;分布式文…

论文阅读_音频压缩_SoundStream

论文信息 number headings: auto, first-level 2, max 4, _.1.1 name_en: SoundStream: An End-to-End Neural Audio Codec name_ch: SoundStream&#xff1a;一种端到端的神经音频编解码器 paper_addr: http://arxiv.org/abs/2107.03312 doi: 10.1109/TASLP.2021.3129994 dat…

织梦网做城市分站织梦分站群二级目录织梦城市分站教程

一、安装网站 1、上传到服务器上输入www.xxxx.com/install进行安装(具体安装方法找百度一大堆); 可以参考http://www.hlzcb.com/zhimengxueyuan/zhimenganzhuangshiyong/25830.html 2.安装好后台点击后台系统→数据库备份还原→数据还原,点击下面的开始还原数据; 二、设…

第五章 图像处理

文章目录 前言一、图像金字塔1.高斯金字塔2.拉普拉斯金字塔 二、图像轮廓1. 轮廓提取2. 轮廓绘制3. 轮廓特征4. 轮廓近似5. 轮廓标记 三、模板匹配四、直方图1. 对比度2. 绘制直方图3. 均衡化3.1 理论3.2 代码 4. CLAHE 五、图像傅里叶变换5.1 正弦平面波5.2 二维傅里叶变换5.3…

论文阅读_音频压缩_Encodec

论文信息 name_en: High Fidelity Neural Audio Compression name_ch: 高保真神经音频压缩 paper_addr: http://arxiv.org/abs/2210.13438 date_read: 2023-04-27 date_publish: 2022-10-24 tags: [‘深度学习’,‘音频’] author: Alexandre Dfossez, Meta AI, FAIR Team cod…

【产品经理】工作交接

一、前言 相信大家对这样的场景一定不陌生&#xff1a;有一天去找某个业务的负责人&#xff0c;突然被告知调岗了&#xff0c;或是辞职了&#xff0c;更坏的情况是&#xff0c;甚至完全找不到相关人员了&#xff0c;直接导致工作搁置了。这种情况&#xff0c;你应该多少会感到…

函数与递归

函数与递归 函数定义与分类库函数库函数的定义与种类二级查询库函数性质工具的使用c语言中常用的库函数总结 自定义函数函数的参数实参定义形参定义 函数调用传值调用图解分析传址调用图解分析编程题判断一个数是不是素数判断一年是不是闰年实现一个整形有序数组的二分查找。 函…

四元数与旋转矩阵之间的转换

在https://blog.csdn.net/fengbingchun/article/details/130039337 中介绍了相机外参及相机的位姿R,t&#xff0c;其中R为3*3旋转矩阵(R的逆矩阵与R的转置矩阵相同)&#xff0c;t为3*1平移向量&#xff0c;R,t组合成3*4的矩阵。 在instant-ngp中执行scripts/colmap2nerf.…

DHT11温湿度传感器

1.认识DHT11 1、概述&#xff1a; DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器&#xff0c;应用领域&#xff1a;暖通空调&#xff1b;汽车&#xff1b;消费品&#xff1b;气象站&#xff1b;湿度调节器&#xff1b;除湿器&#xff1b;家电&#x…