8.4 lambda表达式
lambda表达式又称为箭头函数。
ES6中的 Lambda 表达式即箭头函数,提供了一种快速简洁的语法方式来声明函数。箭头函数可以使用更短的语法来声明匿名函数,并且不需要显式地声明 `this` 和 `arguments` 参数。下面是一些常用的Lambda 表达式示例:
1. 基本语法
JavaScript传统的函数声明语法:
function add(x, y) { return x + y;}z=add(3,7);console.log(z);
add函数是加法,这段代码运行后会打印z的值10。
使用Lambda表达式语法,就变成了这样:
const add = (x, y) => x + y;z=add(3,7);console.log(z);
可以看到代码得到了很大的简化。add这个时候是一个函数对象。
2. 简单的函数调用
map是一个筛选器,数组arr的所有元素都会调用符合map的函数,最后arr的数值放大了一倍。
var arr=[1,2,3];arr=arr.map(function(n){ return n*2;});console.log(arr);
如果用lambda来写这一段,那就变成了:
var arr=[1,2,3];arr=arr.map((n)=>n*2);console.log(arr);
3. Lambda 表达式与 this 关键字
// #this 的值在传统函数中会受调用方式的不同而发生变化const myObject = { value: 100, getValue: function () { console.log(this.value); // #输出 100 setTimeout(function () { console.log(this.value); // #输出 undefined }, 1000); },};myObject.getValue(); // #使用 Lambda 表示式,this 的值是在声明时就被捕获的const myObject2 = { value: 100, getValue: function () { console.log(this.value); // #输出 100 setTimeout(() => { console.log(this.value); // #输出 100 }, 1000); },};
4. Lambda 表达式与解构
const data = [ { name: "Alice", age: 23 }, { name: "Bob", age: 32 }, { name: "Charlie", age: 18 },];// #传统函数与解构const names1 = data.map(function (item) { return item.name;});// #Lambda 表达式与解构const names2 = data.map(({ name }) => name);