lambda 表达式
在《JavaScript形态》中,我们详细的对比了函数表达式和函数声明的区别和联系,本节将介绍一种非常简单、有用的函数定义方法:lambda表达式,或者更为简单粗暴的名称箭头函数。
语法
之所以lambda
表达式又被称为“箭头函数”,是因为它的语法是这样的:
let func = (arg1,arg2,...,argN) => { expression; }
可能首次接触lambda
表达式的童鞋会非常奇怪,不能理解,实际上非常简单,它其实就是以下代码的简写:
let func = function(arg1,arg2,...,argN){
return expression;
}
区别在于函数表达式需要用到function
关键词,而lambda
表达式省略了这个关键字,转而在参数列表和函数体之间添加了一个=>
,这也是箭头函数的来源。
举个实际的例子:
let add = (a,b) => a+b;
//以上表达式等价于
/*
let add = function(a,b){
return a+b;
}
*/
(a,b) => a+b
表示创建一个函数,接收a
、b
两个参数,并返回二者的和。
这里省略了函数定义关键字function
和return
。
用法
lambda
在编程过程中非常的常用,由于它语法简单,在创建匿名函数的时候非常便捷。
lambda
有多种不同的定义方法:
单个参数可以省略参数列表的括号
对于只有一个参数的函数,使用lambda
定义时,可以省略小括号,举例如下:
let bol = x => !!x; //将变量x转为Boolean类型
//等价于
/*
let bol = (x) => !!x;
*/
没有参数需要使用空括号
没有参数的表达式,需要使用空括号,但是不能使用,举例如下:
let hello_world = () => console.log('hello world');
多行代码的函数体
以上案例都是只有一行代码的函数,如果我们需要在函数体中写入多行代码,就需要为函数体加上{}
同时使用return
返回计算结果。
举个例子:
let add = () => {
let n1 = prompt('其输入一个整数',0);
let n2 = prompt('请输入一个整数',0);
return +n1 + +n2;//计算两个输入值的和
}
console.log(add());
在回调中使用lambda表达式
lambda
表达式最常用的地方莫过于回调了,我们经常可以在JavaScript
代码中看到这种用法。
举个例子:
function calculate(a,b,func){
return func(a,b); //使用回调函数
}
//使用lambda传入一个函数用于回调
calculate(1,2,(a,b)=>a+b); //3
calculate(1,2,(a,b)=>a*b); //2
本文仅介绍了lambda
的常规用法,更高级的用法将在后面的《lambda
进阶》中详细介绍。