做完100道题,说说遇到的箭头函数的坑

做完100道题,说说遇到的箭头函数的坑

start

  • 最近做了一百多道js相关的题目吧,发现很多隐藏的坑和箭头函数有关。
  • 再来做一个深层次的复盘。

参考资料

  • ES6入门-阮一峰 箭头函数

聊一聊箭头函数?

说到箭头函数,说说我的第一反应:

  1. es6的语法;
  2. 没有this,它的this来源于执行环境;
  3. 不能当做构造函数;

上面说到的这些,都是来源于我自己想到this的第一反应,其实潜藏的还有一些隐藏逻辑;

this说明:

  1. 如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分;
  2. 如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回;
  3. 由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号,否则会报错;
  4. 可以使用 ...x,rest形式接受多个参数;
  5. 箭头函数没有自己的this对象(详见下文)。
  6. 不可以当作构造函数,也就是说,不可以对箭头函数使用new命令,否则会抛出一个错误。
  7. 不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。
  8. 不可以使用yield命令,因此箭头函数不能用作 Generator 函数。
  9. 箭头函数不能使用这些关键词:arguments、super、new.target;

练习题目

题目1

var Person = () => {
  this.name = '123'
}
var p = new Person()
console.log(p.name)

题目2

var Person = () => {
  this.name = '123'
}
console.log(Person.prototype.toString())

题目3

const obj = {
  s: 42,
  m: () => console.log(this.s)
};

obj.m()

题目4

var s = 111

var temp = {
  s: 222
}
const obj = {
  s: 333,
  m: () => console.log(this.s)
}

obj.m.call(temp)

end

总结一下

  • 箭头函数本身可以简化我们函数的编写
  • 但是在遇到一些题目的时候,需要注意箭头函数和以下单词组合使用时的特殊情况。
    1. this
    2. arguments
    3. super
    4. new
    5. new.target
    6. yield
    7. function *

你可能感兴趣的:(javascript,前端,开发语言)