箭头函数

下面两代码等价:

const fun1 = function(x){return x*x;}const fun = x => x*x;

function换成=>,放在参数和函数体中间

注意:如果没有参数,或有多个参数,需要使用()来定义参数列表
如果有一个参数,可以不()
如果函数体中只有一条语句,可以不用{}

排序:

let arr = [1,5,2,34,22];
let narr = arr.sort(function(a,b){ return a-b;});
console.log(narr);

也可以换成:

let narr = arr.sort((a,b)=>a - b);
//省略了{}

运行:

1.如果箭头函数返回对象时,一定要在对象外边加上小括号

<script>const fun = id =>({id:id,namee:'Hang三'});console.log(fun(10))</script>

运行结果:

this的指向

  • 普通函数的this:指向它的调用者,如果没有调用者则默认指向window.
  • 箭头函数的this:指向箭头函数定义时所处的对象,而不是箭头函数使用时所在的对象,默认使用父级的this
  • 综上,箭头函数没有自己的this,它的this是继承而来,默认指向在定义它时所处的对象
  • 代码块多于一条语句,就用大括号括起来,并且用return返回
  • 箭头函数能够简化回调函数

点击块的背景颜色后变色,用普通函数实现:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title></title><style>#box{width: 100px;height: 50px;background: red;}#box.bgcolor{background:teal;}</style>
</head>
<body>
<div id = "box"></div>
</body>
<script>const box = document.getElementById('box');box.onclick = function(){this.className = 'bgcolor';}
</script></html>

效果:

点击红色的之后:

用箭头函数:(加延迟函数setTimeOut)

    const box = document.getElementById('box');
box.onclick = function () {setTimeout(() => {console.log(this);this.className = 'bgcolor';}, 3000);
}

由这个箭头函数的this的用法也可以知道箭头函数中的this并不是谁调用这个方法就代表哪个对象,而是在它所声明的位置的父级对象

goods = [11,2,43,21,4];
let good1 = good.filter(function(n) {return n >=10 ;})
let good2 = good1.map(function(n) {return n*0.5;})
let sum = good2.reduce(function(s,n){return s+n;},0);

上面的函数转化成钩子函数写可以简化为:

goods = [11,2,43,21,4];
let sum = goods.filter(n =>n >= 10).map(n => n*0.5).reduce((s,n)=>s+n);

map filter reduce方法

其中:
map()方法定义在JavaScript的Array中,它返回一个新的数组,数组中的元素为原始数组调用函数处理后的值。

1.map方法
注意:

map()不会对空数组进行检测

map()不会改变原始数组

语法:
array.map(function(currentValue, index, arr), thisIndex)
参数说明:

function(currentValue, index, arr):必须。为一个函数,数组中的每个元素都会执行这个函数。其中函数参数:

currentValue:必须。当前元素的的值。

index:可选。当前元素的索引。

arr:可选。当前元素属于的数组对象。

thisValue:可选。对象作为该执行回调时使用,传递给函数,用作"this"的值。

2.reduce方法:
reduce() 方法
实例
计算数组元素相加后的总和:

var numbers = [65, 44, 12, 4];function getSum(total, num) {return total + num;
}
function myFunction(item) {document.getElementById("demo").innerHTML = numbers.reduce(getSum);
}

输出结果:

125
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

reduce() 可以作为一个高阶函数,用于函数的 compose。

注意: reduce() 对于空数组是不会执行回调函数的。

语法:
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
function(total,currentValue, index,arr) 必需。用于执行每个数组元素的函数。
initialValue 可选。传递给函数的初始值
3.JavaScript Array filter() 方法

返回数组 ages 中所有元素都大于 18 的元素:

var ages = [32, 33, 16, 40];function checkAdult(age) {return age >= 18;
}function myFunction() {document.getElementById("demo").innerHTML = ages.filter(checkAdult);
}

输出结果为:

32,33,40

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

注意: filter() 不会对空数组进行检测。

注意: filter() 不会改变原始数组。
语法
array.filter(function(currentValue,index,arr), thisValue)
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。
如果省略了 thisValue ,“this” 的值为 “undefined”

javascript箭头函数和this的指向问题相关推荐

  1. JavaScript箭头函数的使用和this指向

    01-箭头函数的基本使用 普通定义函数的方式:function const aaa = function() {} // es6箭头函数 const aaa = () => {} 对象字面量定义 ...

  2. JavaScript箭头函数

    JavaScript箭头函数 箭头函数(arrow functions),是一个来自ECMAScript 2015(又称ES6)的全新特性.箭头函数有时候也叫"lambda表达式" ...

  3. ES6箭头函数中的this指向

    1箭头函数中的this (1)箭头函数中没有this : 这意味着 call() apply() bind() 无法修改箭头函数中的this (2)箭头函数中的this指向 :访问上一个作用域的thi ...

  4. 箭头函数及其this的指向

    目录 一.箭头函数 1.  基础语法 2.箭头函数简写 二.箭头函数的 this 1.全局函数下的 this 2.对象方法里面的 this 3.构造函数的this 4. call().apply(). ...

  5. JavaScript 箭头函数

    文章目录 箭头函数语法 示例 1:无参数的箭头函数 示例 2:带一个参数的箭头函数 示例 3:作为表达式的箭头函数 示例 4:多行箭头函数 this 与箭头函数 在常规函数中 在箭头函数中 参数绑定 ...

  6. JavaScript箭头函数中的this

    JavaScript箭头函数中的this详解 箭头函数极大地简化了this的取值规则. 普通函数与箭头函数 普通函数指的是用function定义的函数: var hello = function () ...

  7. JavaScript箭头函数返回箭头函数

    以下代码中,执行后输出什么结果呢? <html> <body> </body> <script>var a = 123const foo = () =& ...

  8. JavaScript箭头函数(Arrow Function)

    2019独角兽企业重金招聘Python工程师标准>>> ES6标准新增了一种新的函数:Arrow Function(箭头函数). 更简洁的语法 我们先来按常规语法定义函数: func ...

  9. 箭头函数:this的指向问题

    关于typescript中函数的定义,有提到过它的定义方式(详见:函数的定义及特性),当时提到typescript中的'=>'不是ES6中的箭头函数的意思.什么是ES6的箭头函数?代码如下: v ...

最新文章

  1. PAT(甲级)2018年冬季考试 7-4 Heap Paths(非递归与递归解法)
  2. 关键短语抽取及使用BERT-CRF的技术实践
  3. Coursera课程Python for everyone:Quiz: Networks and Sockets
  4. Java-String的常用方法总结!
  5. 牛客18985 数字权重 (数学,快速幂)
  6. Eclispe创建jsp文件,提示错误:“The import Xxx cannot be resolved“的解决方案
  7. 需求评审会议上,被逼疯的程序员
  8. 硬盘使用GPT方式安装windows 10方法
  9. 反射——类(Class)
  10. Tomcat服务器搭建及测试教程(1),腾讯技术官发布的“神仙文档”火爆网络
  11. 关于WEB标准的理解
  12. es6 语法 (类与对象)
  13. 全卷积网络 FCN 详解(很好,详看)
  14. paip.cpu占用高解决方案---ThreadMast 跟Process Lasso的使用
  15. linux基础篇(centeros)
  16. 马哥 python培训
  17. 烽火HG680-KB及其他5款Hi3798MV310芯片盒子刷机固件及教程(当贝桌面)
  18. 设计模式篇(六)——观察者模式
  19. 区块链开发之智能合约设计模式
  20. USB PD快速充电通信原理

热门文章

  1. combus通讯_Vue兄弟组件通信Bus传值--小案例
  2. 计算机组成原理 第四版 总线的主模块 总线的从模块,唐朔飞计算机组成原理课件3.ppt...
  3. html5二次元插件,送你PS一键制作动漫二次元插件,80套背景+50种效果+20款中英字体...
  4. Linux中把文件夹打成war包,SpringBoot中maven项目打成war包部署在liunx服务器上的方法...
  5. java jdk 检测安装_JDK如何安装和配置环境变量以及检验是否成功安装JDK的方法
  6. nearbyserversocket驱动_关于Socket和ServerSocket类详解
  7. java redirect 跨域_碰到了跨域问题, Redirect is not allowed for a preflight request
  8. DataFountain训练赛 | 用户逾期行为预测
  9. 打包指令_DD19A电动热熔打包机,更换易损件方法
  10. 非凸函数上,随机梯度下降能否收敛?能,但有条件,且比凸函数收敛更难