JavaScript 箭头函数

Arrow Function(箭头函数)。

x => x * x 相当于:

function (x) {
return x * x;
}

箭头函数相当于匿名函数,并且简化了函数定义。箭头函数有两种格式,一种像上面的,只包含一个表达式,连{ … }和return都省略掉了。还有一种可以包含多条语句,这时候就不能省略{ … }和return:
x => {
if (x > 0) {
return x * x;
}
else {
return - x * x;
}
}

如果参数不是一个,就需要用括号()括起来:

// 两个参数:
(x, y) => x * x + y * y

// 无参数:
() => 3.14

// 可变参数:
(x, y, …rest) => {
var i, sum = x + y;
for (i=0; i<rest.length; i++) {
sum += rest[i];
}
return sum;
}

如果要返回一个对象,就要注意,如果是单表达式,这么写的话会报错:

// SyntaxError:
x => { foo: x }
因为和函数体的{ … }有语法冲突,所以要改为:

// ok:
x => ({ foo: x })

this
箭头函数看上去是匿名函数的一种简写,但实际上,箭头函数和匿名函数有个明显的区别:箭头函数内部的this是词法作用域,由上下文确定。
this总是指向词法作用域,也就是外层调用者obj:

var obj = {
birth: 1990,
getAge: function () {
var b = this.birth; // 1990
var fn = () => new Date().getFullYear() - this.birth; // this指向obj对象
return fn();
}
};
obj.getAge(); // 25

由于this在箭头函数中已经按照词法作用域绑定了,所以,用call()或者apply()调用箭头函数时,无法对this进行绑定,即传入的第一个参数被忽略:
var obj = {
birth: 1990,
getAge: function (year) {
var b = this.birth; // 1990
var fn = (y) => y - this.birth; // this.birth仍是1990
return fn.call({birth:2000}, year);
}
};
obj.getAge(2015); // 25

相关新闻

深挖苹果Find My技术,伦茨科技ST17H6x芯片赋予产品功能

深挖苹果Find My技术,伦茨科技ST17H6x芯片赋予产品功能

苹果发布AirTag发布以来&#xff0c;大家都更加注重物品的防丢&#xff0c;苹果的 Find My 就可以查找 iPhone、Mac、AirPods、Apple Watch&#xff0c;如今的Find My已经不单单可以查找苹果的设备&#xff0c;随着第三方设备的加入&#xff0c;将丰富Find My Network的版图。产…

2026/7/19 2:58:40 阅读更多 →
【八股】Spring MVC

【八股】Spring MVC

什么是Spring MVC&#xff1f; Spring MVC 是 Spring 中的一个很重要的模块&#xff0c;是一个根据MVC架构推出的web开发框架&#xff0c;目的是为了简化Java的web开发 Spring MVC 执行流程&#xff1f; 现在一般都是前后端分离&#xff0c;根据接口去开发嘛&#xff0c;所以…

2026/7/18 14:53:44 阅读更多 →
C++万物起源:类与对象(三)拷贝构造、赋值重载

C++万物起源:类与对象(三)拷贝构造、赋值重载

目录 一、拷贝构造函数 1.1拷贝构造函数的概念与特征 1.2拷贝构造的实现 1.3默认构造函数 1.4拷贝构造函数典型调用场景 二、赋值运算符重载 2.1赋值运算符重载的格式 一、拷贝构造函数 1.1拷贝构造函数的概念与特征 在c语言语法中&#xff0c;我们可以将一个变量赋值给…

2026/7/16 17:26:30 阅读更多 →
2026抖掌柜无货源实操避坑全指南:合规提效不踩雷,工具赋能永远替代不了核心经营判断 - 电商分享

2026抖掌柜无货源实操避坑全指南:合规提效不踩雷,工具赋能永远替代不了核心经营判断 - 电商分享

2026抖掌柜无货源实操避坑全指南:合规提效不踩雷,工具赋能永远替代不了核心经营判断 很多新手做抖店、拼多多、小红书无货源开店,入手抖掌柜一站式轻量无货源工具后,极易陷入认知误区:以为开通工具、开启自动铺货…

2026/7/19 20:52:33 阅读更多 →
Android开发工具链与性能优化实战指南

Android开发工具链与性能优化实战指南

1. Android开发核心工具链解析 从事Android开发这些年&#xff0c;我深刻体会到工具链的选择直接影响开发效率。Android Studio作为官方IDE&#xff0c;其优势不仅在于深度集成开发环境&#xff0c;更在于对Gradle构建系统的完美支持。记得2016年从Eclipse迁移时&#xff0c;光…

2026/7/19 20:52:33 阅读更多 →
USB技术演进与转串口开发实战指南

USB技术演进与转串口开发实战指南

1. USB技术基础与协议解析USB&#xff08;Universal Serial Bus&#xff09;作为现代计算机最常用的外设连接标准&#xff0c;其技术演进已经深刻影响了我们的数字生活。从1996年的USB 1.0到最新的USB4 2.0&#xff0c;传输速率从1.5Mbps提升至80Gbps&#xff0c;这种指数级增长…

2026/7/19 20:52:33 阅读更多 →
贝叶斯网络:为AI装上因果推理之眼

贝叶斯网络:为AI装上因果推理之眼

1. 项目概述&#xff1a;当计算机开始“琢磨”因果关系你有没有过这种体验&#xff1a;看到同事连续三天加班到凌晨&#xff0c;第二天就感冒了&#xff0c;于是下意识觉得“加班导致免疫力下降”&#xff1f;或者发现每次咖啡喝多了&#xff0c;下午就心慌手抖&#xff0c;便认…

2026/7/19 20:53:37 阅读更多 →
基于YOLO的稻田虫害智能检测系统设计与实现

基于YOLO的稻田虫害智能检测系统设计与实现

1. 项目概述 稻田虫害检测系统是一个基于深度学习技术的智能农业解决方案&#xff0c;旨在通过计算机视觉自动识别稻田中的常见害虫。这个系统采用了YOLO系列算法的最新版本&#xff08;包括YOLOv5/v6/v7/v8&#xff09;&#xff0c;能够实时处理来自摄像头、图片或视频的输入数…

2026/7/19 20:53:37 阅读更多 →
数据中台与集成技术实战:从采集到存储的完整方案

数据中台与集成技术实战:从采集到存储的完整方案

1. 数据中台与数据集成的核心定位数据中台作为企业数字化转型的核心基础设施&#xff0c;其数据集成的本质是构建企业级数据高速公路。我在参与某大型零售集团数据中台建设时深刻体会到&#xff0c;数据集成平台就像人体的循环系统&#xff0c;负责将分散在各业务系统的"数…

2026/7/19 20:53:37 阅读更多 →
鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战&#xff1a;Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析 前言 Emoji Idiom Guess 是一个基于鸿蒙 ArkTS 编写的单页互动应用&#xff0c;核心围绕 表情线索、答案输入、首字母提示和收藏关卡 展开。项目没有依赖复杂服务端&#xff0c;也没有把逻辑…

2026/7/19 0:00:03 阅读更多 →
Unity与Python本地通信:基于Flask的跨语言数据交换实战

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述&#xff1a;为什么我们需要一个本地通信服务器&#xff1f;在游戏开发、数字孪生、仿真训练等众多领域&#xff0c;Unity作为强大的实时3D内容创作平台&#xff0c;其核心逻辑通常由C#驱动。然而&#xff0c;当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/19 0:00:04 阅读更多 →
科研课题设计全流程:从选题到成果落地的实战指南

科研课题设计全流程:从选题到成果落地的实战指南

1. 课题设计全流程解析&#xff1a;从选题到成果落地的实战指南课题设计是科研工作者、高校师生以及企业研发人员日常工作中的核心环节。一个优秀的课题设计不仅决定了研究的方向和质量&#xff0c;更直接影响最终成果的学术价值和应用前景。作为在科研一线摸爬滚打多年的从业者…

2026/7/19 0:00:04 阅读更多 →
鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战&#xff1a;Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析 前言 Emoji Idiom Guess 是一个基于鸿蒙 ArkTS 编写的单页互动应用&#xff0c;核心围绕 表情线索、答案输入、首字母提示和收藏关卡 展开。项目没有依赖复杂服务端&#xff0c;也没有把逻辑…

2026/7/19 0:00:03 阅读更多 →
Unity与Python本地通信:基于Flask的跨语言数据交换实战

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述&#xff1a;为什么我们需要一个本地通信服务器&#xff1f;在游戏开发、数字孪生、仿真训练等众多领域&#xff0c;Unity作为强大的实时3D内容创作平台&#xff0c;其核心逻辑通常由C#驱动。然而&#xff0c;当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/19 0:00:04 阅读更多 →
科研课题设计全流程:从选题到成果落地的实战指南

科研课题设计全流程:从选题到成果落地的实战指南

1. 课题设计全流程解析&#xff1a;从选题到成果落地的实战指南课题设计是科研工作者、高校师生以及企业研发人员日常工作中的核心环节。一个优秀的课题设计不仅决定了研究的方向和质量&#xff0c;更直接影响最终成果的学术价值和应用前景。作为在科研一线摸爬滚打多年的从业者…

2026/7/19 0:00:04 阅读更多 →
ai agent框架spring ai/alibaba 源码原理分析(六) agent和组件

ai agent框架spring ai/alibaba 源码原理分析(六) agent和组件

简介 saa是java的ai agent框架&#xff0c;本系列将深入剖析 Spring AI Alibaba 的源码实现与核心原理&#xff0c;不仅可以指导agent的开发&#xff0c;更可以改造框架&#xff0c;增加新特性 系列内容&#xff1a; 系列(一) 架构 完成 系列(三) 调用 I 工具 完成 II M…

2026/7/19 0:01:20 阅读更多 →
终极指南:如何用Steam-auto-crack实现Steam游戏自动破解

终极指南:如何用Steam-auto-crack实现Steam游戏自动破解

终极指南&#xff1a;如何用Steam-auto-crack实现Steam游戏自动破解 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack Steam-auto-crack是一款功能强大的Steam游戏自动破解工具&#xff…

2026/7/19 9:10:31 阅读更多 →
移动端游戏功耗测试实战:电流、功率、亮度和场景对比

移动端游戏功耗测试实战:电流、功率、亮度和场景对比

移动端游戏功耗测试:先控制变量,再比较优化是否真的省电 摘要:功耗测试最容易犯的错误,是拿两次不同温度、不同亮度、不同场景的平均功率直接比较。本文给出一套可复现的游戏功耗测试方法,覆盖引擎特性验证、版本回归和黑盒体验测试,并说明如何把功耗与帧率、温控、CPU/G…

2026/7/19 19:29:48 阅读更多 →