概述
箭头函数和普通函数的区别
- 箭头函数没有prototype;
- 箭头函数本身没有this、(this是静态的)箭头函数的this始终指向函数声明时所在作用域下的this的值;
- 如果函数外层没有普通函数,严格模式和非严格模式下他的this都会指向window
- 箭头函数不绑定arguments;
- 可以用rest参数来代替arguments对象访问箭头函数的参数列表
let fn = (...rest) => {
console.log(rest);
}
fn(1, 2, 3)
- 箭头函数不能作为构造函数使用;
- call、apply、bind无法改变箭头函数中的this。
一道题目
let test = {
name: 'kk',
say: function () {
console.log(this.name, this);
}
}
test.say() //kk {name:'kk',say:f}
test.name = 'xx'
test.say() //kk {name:'xx',say:f}
在ES5中谁调用function,this就指向谁。上述代码中say被test调用,所以this指向test,this.name=test.name。且test的指向是可变的。
若换成ES6的写法
let test = {
name: 'kk',
say: () => {
console.log(this.name, this);
}
}
箭头函数与普通函数对this的指向不同,ES6定义时this指向谁执行的时候this就指向谁。
此时输出的结果this.name为空,this指向window(这里若结果有争议,与eval()有关)。
最后
以上就是火星上仙人掌为你收集整理的ES6箭头函数常见问题箭头函数和普通函数的区别一道题目的全部内容,希望文章能够帮你解决ES6箭头函数常见问题箭头函数和普通函数的区别一道题目所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复