详细讲解ES6箭头函数语法(附Demo)

前言

讲述箭头函数之前,先了解传统函数的格式,方便做一个对比

1. 传统函数

  • 函数声明
function greet() {
  console.log("Hello!");
}
greet();
  • 函数表达式
const square = function(x) {
  return x * x;
};
console.log(square(5));
  • 匿名函数作为回调
const numbers = [1, 2, 3];
numbers.forEach(function(number) {
  console.log(number);
});
  • 使用 function 关键字声明的命名函数
function add(a, b) {
  return a + b;
}
console.log(add(3, 4));

使用了传统的 function 关键字来声明函数

函数声明和函数表达式都是 JavaScript 中定义函数的常见方式

  • 函数声明:通过 function 关键字和函数名来声明函数
  • 函数表达式:通过 constlet 关键字将函数赋值给一个变量或常量

传统函数语法与箭头函数相比更为冗长,在一些情况下,箭头函数的简洁性和清晰性更受欢迎
但传统函数语法在 ES6 之前一直是 JavaScript 中定义函数的主要方式

2. 箭头函数

ES6 引入了箭头函数语法,提供了一种更简洁的方式来定义函数

箭头函数通常用于匿名函数回调函数中,可以更清晰地表达函数的意图,并且具有词法作用域绑定的特性

  • 无参数剪头参数
const func1 = () => {
  // 函数体
};
  • 单个参数箭头函数
const func2 = (param) => {
  // 函数体
};
  • 多个参数箭头函数
const func3 = (param1, param2) => {
  // 函数体
};
  • 简写形式(当函数体只有一条语句时,可以省略大括号和return关键字):
const func4 = (param) => param * 2;

下面是整体的示例:

// 无参数箭头函数
const greet = () => {
  console.log("Hello!");
};
greet();

// 单个参数箭头函数
const square = (x) => {
  return x * x;
};
console.log(square(5));

// 多个参数箭头函数
const add = (a, b) => {
  return a + b;
};
console.log(add(3, 4));

// 简写形式
const double = (num) => num * 2;
console.log(double(10));

展示了箭头函数的不同用法,包括无参数函数、单个参数函数、多个参数函数以及简写形式

箭头函数通常在需要简洁清晰地定义函数时非常有用

3. 差异比较

单个输出的看,可能感悟不是很深,如果两者放在一起,还是可以看到明显的差异:

// 传统函数示例
function greetTraditional() {
  return "Hello!";
}

// 箭头函数示例
const greetArrow = () => {
  return "Hello!";
}

// 传统函数表达式示例
const squareTraditional = function(x) {
  return x * x;
};

// 箭头函数表达式示例
const squareArrow = (x) => {
  return x * x;
};

// 匿名函数作为回调 - 传统函数
const numbers = [1, 2, 3];
numbers.forEach(function(number) {
  console.log(number);
});

// 匿名函数作为回调 - 箭头函数
numbers.forEach((number) => {
  console.log(number);
});

// 使用 function 关键字声明的命名函数
function addTraditional(a, b) {
  return a + b;
}

// 使用箭头函数声明的命名函数
const addArrow = (a, b) => {
  return a + b;
};

// 简写形式示例
const doubleTraditional = function(num) {
  return num * 2;
};

const doubleArrow = (num) => num * 2;

// 输出结果
console.log(greetTraditional()); // Hello!
console.log(greetArrow()); // Hello!

console.log(squareTraditional(5)); // 25
console.log(squareArrow(5)); // 25

console.log(addTraditional(3, 4)); // 7
console.log(addArrow(3, 4)); // 7

console.log(doubleTraditional(10)); // 20
console.log(doubleArrow(10)); // 20

彩蛋

对于实战中应用的场景还是很多的

类似后端方法的传参:

import request from '@/router/axios';

export const getList = (current, size, params) => {
  return request({
    url: '/api/manong/region/list',
    method: 'get',
    params: {
      ...params,
      current,
      size,
    }
  })
}

export const getLazyTree = (parentCode, params) => {
  return request({
    url: '/api/manong/region/lazy-tree',
    method: 'get',
    params: {
      ...params,
      parentCode
    }
  })
}


export const remove = (id) => {
  return request({
    url: '/api/manong/region/remove',
    method: 'post',
    params: {
      id,
    }
  })
}

export const submit = (row) => {
  return request({
    url: '/api/manong/region/submit',
    method: 'post',
    data: row
  })
}

截图如下:

在这里插入图片描述

  • 24
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农研究僧

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值