箭头函数
- 箭头函数是ES6之后增加的一种编写函数的方法,并且它比函数表达式要更加简介:
- 箭头函数不会绑定this、arguments属性
- 箭头函数布恩那个作为构造函数来使用(不能和new一起来使用,会抛出错误)
js
// 1. 之前的方式
function foo1() {}
let foo2 = function(name, age) {
console.log("函数体代码")
}
// 2. 箭头函数完整写法
let foo3 = (name, age) => {
console.log("箭头函数的函数体")
}箭头函数的简写优化
1.如果箭头函数只有一个参数,那么()可以省略
js
names.forEach(item => {
console.log(item)
})js
let evenNum = nums.filter(item => {
return item % 2 === 0
})
console.log(evenNum)2.如果函数执行体中只有一行代码,那么可以省略大括号
一行代码中不能带return关键字,如果省略,需要带return一起省略(下一条规则)
js
names.forEach(item => console.log(item))3.只有一行代码时,这行代码的表达式结果会作为函数的返回值默认返回
js
let evenNum = nums.filter(item => item % 2 === 0)
console.log(evenNum)4.如果函数执行体只有返回一个对象,那么需要给这个对象加上()
注意:在redux中重要,经常使用
js
let fn = () => ({ name: "lwt" })
console.log(fn())练习:求数组中所有偶数平方的和
js
let num = [20, 30, 11, 15, 111]
let res = num.filter(item => item % 2 === 0)
.map(item => item * item)
.reduce((prevValue, item) => prevValue + item)
console.log(res)箭头函数中的this使用
箭头函数中,压根没有this
因为箭头函数中没有this,所以它的this查找规则就是找上一层作用域的this(非常重要!!!)
对象内部不算一个代码块,更不算一个作用域,只有函数才是
