箭头函数—可以去掉function关键字了

看了不少的资料,虽然也有好多的知识不懂,但是我可以简单的分享下我的结论,有误的地方请大佬指正

作用域我看了几篇文章搞糊涂了,一个说 作用域就是大括号包含的。还有一个说 作用域是抽象的作用范围,没有具体的指向谁。 虽然我更倾向第二个,但是,下面的文章我写的是函数体。

普通函数与箭头函数的对比

普通函数:
// 普通函数的声明式写法
// function func(){
  // console.log('我是声明式写法')
// }
// 1.普通函数(赋值式写法)
let func = function () {
  console.log('我是赋值式写法')
}
func() // 我是赋值式写法
箭头函数:
// 2.箭头函数(只可以赋值式写法,不可声明式写法)
let func1 = () => {
  console.log('我是箭头函数')
}
func1() // 我是箭头函数

参数只有一个时,可以省略小括号

let func2 = a => {
  return console.log(a + a)
}
func2(2) // 4

函数体中只有一行代码时,可以省略大括号和return

let func3 = (a) => console.log(a * a)
func3(2) // 4

箭头函数与普通函数的this问题

普通函数的this:
let func4 = function () {
  console.log(this)
}
func4(); // window
// 对象中的函数this指向
let obj = {
  func1:function () {
    console.log(this);
  }
}
// 普通函数有自己this,而对象调用了这个函数,所以指向对象
obj.func1(); // obj对象
箭头函数的this
let func5 = () => console.log(this);
func5(); // window
let obj1 = {
  func1:() => console.log(this)
}
// 箭头函数自身没有this,但是它会从自身函数体一层一层的向外找this,找到了对象的this
// 对象的this指向window
obj1.func1(); // window

不怎么理解??我在来个例子

let obj2 = {
  i:2,
  func1: () => console.log(this.i)
}
// 因为箭头函数没有this,所以它的this就是obj2的this。
// 而obj2的this指向的window。在全局没有定义变量i,所以为undefined
obj2.func1(); // undefined

结语

希望能对小伙伴们有所帮助,这里写的例子有点少,我感觉理解起来会很容易的吧。如果小伙伴们掌握牢固了,可以看高阶函数中的例子。当然了,在promise中也比较常用箭头函数。最后感谢小伙伴们的大力支持。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值