JavaScript箭头函数-取代匿名函数

文章详细介绍了JavaScript中的箭头函数,包括其基本使用、函数表达式、参数传递(单个和多个参数)以及this的指向规则。箭头函数简化了函数定义,并且其this值继承自外层作用域,这与传统函数不同,不适用于作为对象方法时的this绑定。
摘要由CSDN通过智能技术生成

介绍

使用箭头函数可以更方便的书写函数体,它的作用只在于为匿名函数提供更简洁得写法

  • 特点:
  1. 在箭头函数中没有this指针
  2. 在箭头函数中没有arguments动态参数,但是有…args剩余参数

目录


基本使用

函数表达式

const fn = function(){
  console.log(123);
};

箭头函数基本语法

const fn = () => {
  console.log(123);
};
fn();

传入参数:

单个参数

单个参数-基础写法
const fn = (x) => {
  console.log(x);
};
fn(1);
单个参数-精简写法

单个参数可以省略括号

const fn = x => {
  console.log(x);
};
fn(1);
单个参数-将参数以对象形式返回

函数中只有单行语句时可以省略大括号{}
下面代码中并未省略大括号但是因为要求返回得事对象的形式故而是双重大括号 而这样写是有问题的 因此将外面大括号改成小括号即可

const fn = uname => ({name: uname});

下面代码其实已经省略大括号 只是我们要求返回的是一个对象 故而又加上了大括号

const fn = uname => {name: uname};

多个参数

  • 在箭头函数中可以使用…args,无法使用arguments关键字
// 1. 利用箭头函数来求和
const getSum = (...arr) => {
  let sum = 0
  for (let i = 0; i < arr.length; i++) {
    sum += arr[i]
  }
  return sum
}
const result = getSum(2, 3, 4)
console.log(result) // 9

箭头函数this指向

  • 在传统函数中谁调用了函数,this就指向谁
  • 在箭头函数中this指向它所在作用域链的上一层作用域
  • 为DOM事件添加监听时不建议使用箭头函数(不方便)//合适的地方做合适的事

下面将展示各种情况下this指向

↓↓↓各种情况下this指向↓↓↓

普通函数

// 以前this的指向:  谁调用的这个函数,this 就指向谁
console.log(this)  // window
// 普通函数
function fn() {
  console.log(this)  // window
}
window.fn()

对象方法

// 对象方法里面的this
const obj = {
  name: 'andy',
  sayHi: function () {
    console.log(this)  // obj
  }
}
obj.sayHi()

箭头函数

// 2. 箭头函数的this  是上一层作用域的this 指向
const fn = () => {
  console.log(this)  // window
}
fn()

对象方法箭头函数

  箭头函数取上一作用域调用对象,指向obj,而obj默认通过window.obj调用,因此指向window

// 对象方法箭头函数 this
const obj = {
  uname: 'pink老师',
  sayHi: () => {
    console.log(this)  // this 指向谁? window
  }
}
obj.sayHi()

对象中传统函数内调用箭头函数

const obj = {
  uname: 'pink老师',
  sayHi: function () {
    console.log(this)  // obj
    let i = 10
    const count = () => {
      console.log(this)  // obj 
    }
    count()
  }
}
obj.sayHi()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值