百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

JavaScript:箭头函数(箭头函数 generator)

myzbx 2025-07-23 16:44 5 浏览

前端小白Earl笔记

箭头函数的基本语法

  • 箭头函数属于函数表达式。箭头函数表达式的写法与函数申明以及普通函数表达式的写法有所不同。
//函数申明
function f1(){
    console.log('普通函数')
}
function f2(a, b){
    return a + b;
}

//普通函数表达式
let f1 = function(){
    console.log('普通函数')
}
let f2 = function(a, b){
    return a + b;
}

//箭头函数表达式
let f1 = () => {
    console.log('箭头函数')
}
let f2 = (a, b) => {
    return a + b;
}
  • 箭头函数的函数体如果只有一个表达式,可以写成一行的简写体,省略return,直接返回该表达式。
//基础语法
let f2 = (a, b) => {
    return a + b;
}

//简写体
let f2 = (a, b) => a + b
  • 箭头函数如果只有一个参数,可以省略小括号。
//基础语法
let f3 = (a) => {
    return a + 1;
}
let f4 = (a) => {
    console.log(a);
}

//简写体
let f3 = a => a + 1
let f4 = a => {
    console.log(a);
}
  • 箭头函数的加小括号的函数体返回对象字面量表达式。
let f5 = age => ({Age: age})
console.log(f5(18))  // {Age: 18}
  • 箭头函数支持参数列表解构。
let f6 = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c
f6()  // 6

箭头函数的特点

  • 箭头函数表达式比普通函数表达式更简洁,指向性更强,可读性更好。
  • 箭头函数属于表达式函数,因此不存在函数提升。
  • 箭头函数相当于匿名函数,不能作为构造函数,不可以使用new命令。
  • 箭头函数没有prototype属性。
  • 箭头函数不绑定this,它只会从自己的作用域链的上一层继承 this。
var user1={
  name:'earl',
  fullname:function(){ return this.name }  // 'earl' 这里的this指向user1
}

var user2={
  name:'earl',
  fullname:()=>this.name  //'' 箭头函数没有定义this绑定,这里的this指向window
}

var user3={
  name:'earl',
  sleep:function(){ 
    console.log(this)   // 这里的this指向user3
    var fn = ()=>{console.log(this)} // 这里的this也指向user3
    fn()
  }  
}
  • 使用call,apply,bind并不会改变箭头函数中的this指向。
window.name = "window_name";
let f1 = function () {
  return this.name
}
let f2 = () => this.name
let obj = { name: "obj_name" }

console.log(f1.call(obj))  //obj_name
console.log(f2.call(obj)) // window_name
  • 箭头函数不绑定arguments,它只会从自己的作用域链的上一层继承arguments。箭头函数可以使用剩余参数。
let f1 = ()=>console.log(arguments)
f1()  //报错 Uncaught ReferenceError: arguments is not defined

function f2(){
  let f = ()=> {
    console.log(arguments)
  }
  f();
}
f2(1,2,3) // [1,2,3]

相关推荐

大白话讲nnvm(大白话讲解什么是卷积)

之前工作经验中,在某大厂,开发过机器学习框架,在和业务同学的合作下,取得还可以的成绩,但是一直觉得缺少了什么,最近在刷ai-system相关的公开课,才明白计算图的重要性,以往觉得不能理解的东西,现在...

Python之Json模块详解(python.json()用法)

Step1:Json是什么JSON(JavaScriptObjectNotation,JS对象标记)是一种轻量级的数据交换格式。具有数据格式简单,读写方便易懂等很多优点。许多主流的编程语言都...

最新潮最流行的影音资源——MAU影视

MAO影视,一款完全免费的影视软件,为您带来最新潮最流行的影音资源,软件本身并不具备任何资源,只是作为一款播放器提供给大家。配合相关的接口链接,即可为您呈现丰富多彩的影音节目。软件版本支持:1.安卓2...

Python版的迷你程序——json文件转换为csv

浅话C语言是过去几十年软件和硬件两个阵营之间,签署的最坚实的契约。硬件为C语言的语义提供了最能发挥其性能的基础构件,而软件虽然搞了很多的圆环套圆环般的层次,但最终都以C语言作为最后的沉淀收尾。----...

没硬盘、网盘也能看片自由!NAS一键部署MoonTV,随时随地爽看。

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:羊刀仙有没有一个应用服务,能满足既没有足够预算购置硬盘,也不想依托网盘的朋友的家庭观影需求?之前我介绍过LibreTV,本篇再来看看另一个更...

用云存储30分钟快速搭建APP,你信吗?

背景不管你承认与否,移动互联的时代已经到来,这是一个移动互联的时代,手机已经是当今世界上引领潮流的趋势,大型的全球化企业和中小企业都把APP程序开发纳入到他们的企业发展策略当中。但随着手机APP上传的...

Python的dict和json区别(python中dict的特点)

大家有没有发现,python中的字典类型的数据结构,和我们目前比较流行的web端的json格式,非常类似,几乎有点分不清了。那么这2者的区别是什么呢?首先,从概念上,我们要理解这2者是截然不同的。py...

越晚搞懂 MySQL JSON 数据类型,你就越吃亏

作者介绍陈臣,甲骨文MySQL首席解决方案工程师,公众号《MySQL实战》作者,有大规模的MySQL,Redis,MongoDB,ES的管理和维护经验,擅长MySQL数据库的性能优化及日常操作的原理剖...

揭秘你不会画“信息结构图”的本质

编辑导语:产品信息结构图有助于清晰地展示产品信息,一定程度上可以为后台上传数据提供依据,但不少人可能觉得产品信息结构图很难,这可能是对数据库表结构不理解等因素导致的。本篇文章里,作者就产品信息结构图的...

python之json基本操作(.json python)

1.概述JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它具有简洁、清晰的层次结构,易于阅读和编写,还可以有效的提升网络传输效率。Python标准库的...

JWT 和 JJWT 还傻傻的分不清吗(jwt jti)

JWTs是JSON对象的编码表示。JSON对象由零或多个名称/值对组成,其中名称为字符串,值为任意JSON值。JWT有助于在clear(例如在URL中)发送这样的信息,可以被信任为不可读(即加密的)、...

比json快20-100倍!protobuf原理深入剖析

一、protobuf语法指南1.1定义一个消息类型先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所在的页数,以及每一页多少条查询结...

了解一下ProtoBuf(了解一下相亲对象的年龄)

序列化与反序列化我们在进行网络通信调用的时候,总是需要将内存的数据块经过序列化,转换成为一种可以通过网络流进行传输的格式。而这种格式在经过了传输之后再经过序列化,能还原成我们预想中的数据结构。那么我们...

JSON数据类型详细总结(json数据类型详细总结怎么写)

JSON详解一、JSON的概述及其使用JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。它基于javascript的一个子集。JSON是的数据交换语言,易...

接口自动化测试之JSON Schema模式该如何使用?

JSONSchema模式是一个词汇表,可用于注释和验证JSON文档。在实际工作中,对接口返回值进行断言校验,除了常用字段的断言检测以外,还要对其他字段的类型进行检测。对返回的字段一个个写断言显...