箭头函数的语法

  function fn1() {
console.log(1);
} let fn2 = () => {
console.log(2);
}
fn1()//1
fn2()//2 //箭头函数: 形参=>返回值
//单个形参的最简写法,箭头函数作为匿名的回调函数是可以省略let fn ,既(形参)=>{语句}
let fn = nub => nub * 2
console.log(fn(10));//20 //多个形参,语句单一。(形参1,形参2)=>返回值
let fn = (num1, num2, num3) => num1 * num2 * num3
console.log(fn(2, 3, 4))//24 //多个形参,多条语句,不加return返回undefined
let fn = (num1, num2, num3) => { let a = num1 + num2; let b = num1 + num3 ;console.log(a + b)}
console.log(fn(2, 3, 4))//报错undefined,与普通函数的没有return的值相同都是undefined //多个形参,多条语句,必须用return返回函数值
let fn = (num1, num2, num3) => { let a = num1 + num2; let b = num1 + num3 ;return(a + b)}
console.log(fn(2, 3, 4))//11

箭头函数的不定参

不定参对应普通函数的arguments

         function fn1() {
console.log(arguments);
}
fn1(1, 2, 3, 4)//伪数组arguments[1,2,3,4] let fn2 = () => {
console.log(arguments);
}
fn2(1, 2, 3, 4)//arguments is not defined,也就是箭头函数没有不定参 //解决剩余参数的方法
let fn3 = (a, b, ...c) => {
console.log(a, b, c)
}
fn3(1, 2, 3, 4)//1,2,[3,4],剩余参数以数组保存 let fn3 = (a, b, ...c) => {
console.log(c[0])
}
fn3(1, 2, 3, 4)//3,注意剩余参数以Array[3,4]进行保存

箭头函数的this的指向

		//本质,箭头函数的this在定义时所在的对象,其实质是因为箭头函数没有自己的this,用的是外层的this
function fn1() {
console.log(this);
}
fn1()//window let fn2 = () => {
console.log(this);
}
fn2()//window,箭头函数本身没有this指向,在调用时指向其声明时所在作用域,这里声明在全局作用域下所以指向window //在点击事件中
document.onclick = function () {
let fn = () => { console.log(this) }
fn()//this指向#document,指向调用时的作用域
} //深入理解
let fn
let fn2 = function () {
console.log(this);
fn = () => { console.log(this) }
}
fn2()//先调用fn2为了给fn赋值为函数,全局函数this打印结果是指向window
fn()//箭头函数调用时应指向声明所在的作用域,fn声明在fn2中,所以指向与fn2相同 //深入理解--变形
let fn
let fn2 = function () {
console.log(this);
fn = () => { console.log(this) }
}
fn2 = fn2.bind(document.body)//先调用fn2为了给fn赋值为函数
fn2()//body
fn()//body

ES6中的箭头函数的语法、指向、不定参数的更多相关文章

  1. 前端项目中常用es6知识总结 -- 箭头函数及this指向、尾调用优化

    项目开发中一些常用的es6知识,主要是为以后分享小程序开发.node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫. 项目开发常用es6介绍 1.块级作用域 let const 2. ...

  2. ES6中的箭头函数

    关于函数表达式中的this:自动引用正在调用当前方法的.前的对象1.obj.fun()中的this fun中的this -> obj2.new Fun() Fun中的this -> 正在创 ...

  3. ES6中的箭头函数与普通函数的区别

    箭头函数与普通函数的区别 1.语法上更加简洁.清晰 基本语法: // 关于箭头函数的参数 // 如果箭头函数没有参数,直接写一个括号即可 let fun1 = () => { console.l ...

  4. es6中的(=>)箭头函数

    x => x * x 上面的箭头函数相当于: function (x) { return x * x; } 箭头函数相当于匿名函数,并且简化了函数定义. 箭头函数有两种格式,一种像上面的,只包含 ...

  5. ES6中的箭头函数和普通函数有什么区别?

    1.普通函数中的this总是指向调用它的那个对象, 箭头函数没有自己的this,他的this永远指向其定义环境,任何方法都改变不了其指向,如call().bind().apply().(正是因为它没有 ...

  6. JS ES6中的箭头函数(Arrow Functions)使用

    转载这篇ES6的箭头函数方便自己查阅. ES6可以使用“箭头”(=>)定义函数,注意是函数,不要使用这种方式定义类(构造器). 一.语法 基础语法 (参数1, 参数2, …, 参数N) => ...

  7. ES6——>let,箭头函数,this指向小记

    let let允许你声明一个作用域被限制在块级中的变量.语句或者表达式. 还是那个经典的问题:创建5个li,点击不同的li能够打印出当前li的序号. 如果在for循环中使用**var**来声明变量i的 ...

  8. 聊聊 ES6 中的箭头函数

    首先来两点: 当只有一个参数的时候,那么 () 可以省略 当只有一个 return 的时候,那么 {} 可以省略 当函数体内只有一条语句的时候,那么 {} 也可以省略 下面来几个简单的例子来对比 ES ...

  9. 箭头函数以及this指向问题

    一.定义函数的方式 //1.function const aaa = function () { } //2.对象字面量中定义函数 const obj = { bbb() { } } //3.ES6中 ...

随机推荐

  1. 结对编程-stage_2

    教学班 罗杰.任建班周五3.4节 gitlab项目地址 Here it is. 成员 周远航(3004) 李辰洋(3477) 结对编程体验 经过了上一阶段的磨合,第二阶段我们的配合更加流畅,也熟悉了对 ...

  2. 「SpringBoot2.4新特性」jar自动瘦身

    自动分析瘦身 Spring Boot 项目最终构建处理 JAR 包大小一直是个诟病,需要把所有依赖包内置最终输出可运行的 jar. 当然可以使用其他的插件扩展 实现依赖 JAR 和 可运行 jar 分 ...

  3. 6. linux 专业词汇

    什么是交换分区? 交换分区是一个特殊的分区,他的作用相当于windows下的虚拟内存,这个分区的大小一般设置为物理内存的两倍. 什么是Grub? Grub是一个系统引导工具,通过它可以加载内核,从而引 ...

  4. ForkJoinPool的工作原理和使用

    场景:当任务很多,成千上万个,或者单个任务很大,执行起来很耗时间,这时,就可以把任务进行拆分,拆分成多个小任务去执行,然后小任务执行完毕后再把每个小任务执行的结果合并起来,这样就可以节省时间. For ...

  5. 07_利用pytorch的nn工具箱实现LeNet网络

    07_利用pytorch的nn工具箱实现LeNet网络 目录 一.引言 二.定义网络 三.损失函数 四.优化器 五.数据加载和预处理 六.Hub模块简介 七.总结 pytorch完整教程目录:http ...

  6. 《C标准库》学习笔记整理

    简介 <C标准库>书中对 C 标准库中的 15 个头文件的内容进行了详细的介绍,包括各头文件设计的背景知识.头文件中的内容.头文件中定义的函数和变量的使用.实现.测试等. 我学习此书的目的 ...

  7. 群晖 创建nfs 共享文件夹 k8s 使用

    1) 打开控制面板 2) 打开共享文件夹 3) 新增共享文件夹 4) 基本信息配置 2) 3) 4) 5) 点完确定,应该会退出,继续选中刚才创建的,点编辑 2) 3) 5)返回主页面,点击file ...

  8. mooc人大单元测试4

    @font-face { font-family: Wingdings } @font-face { font-family: 宋体 } @font-face { font-family: " ...

  9. 04- 移动APP功能测试要点以及具体业务流程测试

    5.离线测试: 离线是应用程序在本地的客户端会缓存一部分数据以供程序下次调用. 1.对于一些程序,需要在登录进来后,这是没有网络的情况下可以浏览本地数据. 2.对于无网络时,刷新获取新数据时,不能获取 ...

  10. JS笔记(二)

    1.完整的JavaScript由核心(ECMAScipt).文档对象模型(DOM).浏览器对象模型(BOM)组成. 2.<script>标签的用法:引用位置.src.async.defer ...