2026/1/12 9:41:43
网站建设
项目流程
帝国网站管理系统视频教程,wordpress著名博客,dw做六个页面的网站,东莞前十的外贸公司箭头函数#xff08;Arrow Function#xff09;是 ES6 引入的一种简洁的函数定义方式#xff0c;核心优势是语法更简洁、不绑定自己的 this#xff08;继承外层作用域的 this#xff09;#xff0c;同时没有 arguments、prototype 等特性。下面详细讲解其用法和简化语法。…箭头函数Arrow Function是 ES6 引入的一种简洁的函数定义方式核心优势是语法更简洁、不绑定自己的 this继承外层作用域的 this同时没有 arguments、prototype 等特性。下面详细讲解其用法和简化语法。一、基础语法对比先通过对比普通函数和箭头函数理解核心结构// 普通函数函数表达式 const add function(a, b) { return a b; }; // 箭头函数基础形式 const add (a, b) { return a b; };箭头函数的核心结构参数 函数体二、核心简化语法重点箭头函数的简化分为参数简化和函数体简化可根据场景逐步精简1. 参数简化场景语法示例说明无参数() { ... }必须保留空括号单个参数a { ... }可省略括号推荐简化多个参数(a, b, c) { ... }必须保留括号解构参数({ name, age }) { ... }解构仍需括号示例// 无参数 const sayHi () { console.log(Hi!); }; // 单个参数简化括号 const double num { return num * 2; }; // 多个参数 const sum (a, b, c) { return a b c; }; // 解构参数 const getUserInfo ({ name, age }) { return { name, age }; };2. 函数体简化如果函数体只有一行返回语句可省略{}和return核心简化场景语法示例说明单行返回值a a * 2省略 {} 和 return单行返回对象a ({ id: a, name: test })对象需用 () 包裹避免歧义多行函数体a { const b a 1; return b; }必须保留 {} 和 return示例// 单行返回值最简形式 const double num num * 2; // 单行返回对象注意括号 const createUser id ({ id, name: User }); // 多行函数体不可简化 const calculate (a, b) { const sum a b; const product a * b; return sum product; };三、核心应用场景 1数组方法的回调函数最常用数组的map/filter/reduce/forEach/sort等方法的回调函数逻辑通常简洁单行 / 少量逻辑箭头函数能极大简化代码且无需关注 this 绑定数组方法回调的 this 本身无特殊意义。示例const arr [1, 2, 3, 4]; // 1. map数据转换最简写法 const doubleArr arr.map(num num * 2); // [2,4,6,8] // 2. filter数据过滤 const evenArr arr.filter(num num % 2 0); // [2,4] // 3. reduce聚合计算 const sum arr.reduce((acc, cur) acc cur, 0); // 10 // 4. sort自定义排序 const users [{ age: 20 }, { age: 18 }]; users.sort((a, b) a.age - b.age); // 按年龄升序四、核心应用场景 2异步 / 定时器回调固定 this定时器setTimeout/setInterval、Promise 回调、事件监听异步处理等场景普通函数会导致this指向混乱箭头函数可继承外层作用域的this无需手动绑定如bind/ 保存that。示例 1定时器const user { name: 张三, fetchData() { // 普通函数this 指向 window/global setTimeout(function() { console.log(this.name); }, 100); // undefined // 箭头函数this 继承 fetchData 的 this指向 user setTimeout(() { console.log(this.name); }, 100); // 张三 } }; user.fetchData();示例 2Promise 回调class Order { constructor(price) { this.price price; } calculate() { // Promise 回调用箭头函数继承 this 指向 Order 实例 Promise.resolve().then(() { console.log(this.price * 0.8); // 正确访问实例属性 }); } } new Order(100).calculate(); // 80五、核心应用场景 3纯函数 / 简单逻辑函数仅做数据计算、无副作用、无需动态this的简单函数如工具函数用箭头函数更简洁语义更聚焦逻辑。示例// 工具函数判断是否为数字 const isNumber val typeof val number !isNaN(val); // 工具函数格式化时间单行逻辑 const formatTime time new Date(time).toLocaleString(); // 组件内简单计算如 React/Vue 中 const getTotal (list) list.reduce((acc, item) acc item.count, 0);六、核心应用场景 4解构 / 剩余参数结合简化参数处理箭头函数适配 ES6 解构、剩余参数语法能进一步简化参数接收逻辑尤其适合接收对象 / 数组参数的场景。示例// 解构对象参数 const getUserInfo ({ name, age }) ({ name, age, id: Date.now() }); getUserInfo({ name: 李四, age: 25 }); // { name: 李四, age: 25, id: 17... } // 剩余参数接收任意参数 const merge (...args) args.reduce((acc, cur) ({ ...acc, ...cur }), {}); merge({ a: 1 }, { b: 2 }); // { a:1, b:2 }七、核心应用场景 5React/Vue 组件内的回调简化写法在 React 函数组件、Vue 组件的 methods/setup 中箭头函数可简化事件回调、生命周期 / 钩子函数的写法同时避免 this 绑定问题React 类组件中尤甚。示例 1React 类组件避免 bindclass Button extends React.Component { handleClick () { // 箭头函数作为类属性this 固定指向组件实例 console.log(this.props.text); }; render() { return button onClick{this.handleClick}点击/button; } }示例 2Vue setup 中的回调script setup import { ref } from vue; const count ref(0); // 箭头函数简化点击回调 const handleAdd () { count.value 1; }; /script template button clickhandleAdd计数{{ count }}/button /template八、绝对不适合的场景避坑关键箭头函数的 “特性阉割” 决定了以下场景必须用普通函数不适合的场景原因正确做法对象方法箭头函数 this 指向外层如 window而非对象本身用普通函数定义对象方法构造函数无 prototype不能用 new 调用用普通函数 / 类class生成器函数不能使用 yield 关键字用function*定义生成器事件处理函数需动态 this指向事件源箭头函数 this 固定用普通函数或手动传事件源需 arguments 场景箭头函数无 arguments若需伪数组需手动处理用普通函数或剩余参数...args反例错误用法// 1. 对象方法用箭头函数错误 const obj { name: 王五, sayHi: () console.log(this.name) // this 指向 window输出 undefined }; obj.sayHi(); // 2. 构造函数用箭头函数错误 const Person (name) { this.name name; }; new Person(赵六); // TypeError: Person is not a constructor // 3. 事件处理函数用箭头函数错误 document.querySelector(button).addEventListener(click, () { console.log(this); // 指向外层 this而非按钮元素 });九、总结1、简化语法速记原始写法简化后适用场景(a) { return a * 2; }a a * 2单个参数 单行返回() { return 1; }() 1无参数 单行返回(a,b) { return ab; }(a,b) ab多个参数 单行返回(a) { return {a}; }a ({a})单行返回对象箭头函数的核心是简洁 继承 this优先用于回调函数如数组方法、定时器避免用于构造函数、对象方法等场景。2、箭头函数应用场景速记适用场景核心优势示例数组回调map/filter语法极简无需关注 thisarr.map(num num * 2)异步 / 定时器回调固定 this避免指向混乱setTimeout(() { ... }, 100)纯工具函数简洁聚焦逻辑const isNumber val typeof val number解构 / 剩余参数处理适配 ES6 语法简化参数const fn ({ a }) a * 2组件内简单回调React/Vue简化写法固定 this类组件事件回调、setup 内函数核心原则只要不需要 “动态 this”“构造能力”“生成器 /yield”且逻辑简洁优先用箭头函数反之用普通函数。