15.说一说es6中箭头函数?
得分点:
没有
this、this是从外部获取、不能使用new、没有arguments、没有原型和super
标准回答:
- 箭头函数相当于匿名函数,简化了函数定义。
- 箭头函数有两种写法:
① 当函数体是单条语句的时候可以省略{}和return。
② 另一种是包含多条语句,不可以省略{}和return
// 单条语句
clickEvent: () => this.createBDData()
// 多条语句
clickEvent: (e) => {
this.establish = false;
this.dialogData = toolUtil.deepCopy(e);
this.BdJumpToDetails() // 点击跳转到详情界面
},
- 箭头函数最大的特点就是没有
this,所以this是从外部获取,就是继承外部的执行上下文中的this,由于没有this关键字所以箭头函数也不能作为构造函数,- 同时通过
call()或apply()方法调用一个函数时,只能传递参数(不能绑定this),第一个参数会被忽略。- 箭头函数也没有原型和
super。 不能使用yield关键字,因此箭头函数不能用作Generator函数。 不能返回直接对象字面量。
加分回答:
1. 箭头函数的不适用场景:
① 定义对象上的方法 当调用
dog.jumps时,lives并没有递减。因为this没有绑定值,而继承父级作用域。
var dog = { lives: 20, jumps: () => {
this.lives--;
}
}
② 不适合做事件处理程序 此时触发点击事件,
this不是button,无法进行class切换
var button = document.querySelector('button');
button.addEventListener('click', () => {
this.classList.toggle('on');
});
2. 箭头函数函数适用场景:
① 简单的函数表达式,内部没有this引用,没有递归、事件绑定、解绑定,适用于map、filter等方法中,写法简洁
var arr = [1,2,3];
var newArr = arr.map((num) => num * num)
② 内层函数表达式,需要调用
this,且this应与外层函数一致时
let group = {
title: 'Our Group',
students: ['John', 'Pete', 'Alice'],
showList() {
this.students.forEach(
student => alert(this.title + ': ' + student))
}
}
group.showList()
💞💖💓💗每个时代,
✨🌟⭐️💫都悄悄犒赏会学习的人。

箭头函数是ES6中的一种简洁的函数定义方式,它没有自己的this,而是从外部获取。这使得箭头函数不能用作构造函数,也无法在事件处理程序中正确设置this。尽管如此,箭头函数在简单的函数表达式和数组方法如map、filter中非常有用,因为它保持了外层函数的this上下文。

被折叠的 条评论
为什么被折叠?



