ES6 折腾记 - 箭头函数【Arrow function】要点及脱坑点

简介: ES6的箭头函数的特点:永远是匿名函数,This指向obj内部;什么是箭头函数?:箭头函数是匿名函数,ES5匿名函数的语法糖;但又增加了ES5所没有的一些优点

概述


ES6的箭头函数的特点:永远是匿名函数,This指向obj内部;


什么是箭头函数?:箭头函数是匿名函数,ES5匿名函数的语法糖;但又增加了ES5所没有的一些优点


//ES5
var tt = function tt() {
  return 55 + 99;
};
//ES6
var tt = () => 55 +99
//是不是一对比,写法的差异就看出来了


用法汇总


//ES5匿名函数的用法
var testArr = [1,2,3,4,5,6];
var test = testArr.reduce(function (previous, current, index, array){ 
    console.log(previous); //累加值
    console.log(current); //当前位的数组值
    console.log(index); //元素在数组中的索引
    console.log(array); //调用reduce的数组
    return previous + current
    })  //结果集:21
//ES6箭头函数
var test = testArr.reduce((previous, current, index, array) => { 
    console.log(previous); //累加值
    console.log(current); //当前位的数组值
    console.log(index); //元素在数组中的索引
    console.log(array); //调用reduce的数组
    return previous + current
    })
//注意点
/**
* 1. 一个参数的可以不带括号直接作用
* 2. 没有参数的必须带小括号
* 3. 多条执行语句需花括号包裹
* 4. 字面量对象的返回需要小括号包括!!!!!!!
* 5. this强制绑定(定义绑定),普通函数是用时绑定(apply,call,bind);箭头函数的this不等同于'use strict'模式下的this
*/
var testArr = [1,2,3,4,5,6];
//1
testArr.map( n => ++n); //[2, 3, 4, 5, 6, 7]
//2
var tt = () => 55 +99;
tt(); //结果集:154
//3
var ss = (ar1,ar2) => {
   var ar3 = ar1 > ar2 ? ar1 : ar2;
   return ar3 - ar1;
};
ss(55,99); //结果集:44
//4: 若是不用小括号,对象那个花括号会给解析器当做标签解析,返回则是undefined!!;
var ee = (testKey,testValue) => ({testKey:testValue});
ee('myName','crper'); //Object {testKey: "crper"}
/*5,箭头函数让`var self = this`这种重新指定this的写法不再出现;
* 箭头函数内的this强制指向obj;不需要额外的指向和bind这些
* 最常见需要重新指向this的一般出现在setInterval这些异步执行的函数内;
* 因为默认内部的指向是指向window,除非函数作为一个对象的value会指向obj;
*/


总结


ES6折腾记的第一篇;下一篇let,const,及字符串模板
目录
相关文章
|
1月前
|
中间件 Docker Python
【Azure Function】FTP上传了Python Function文件后,无法在门户页面加载函数的问题
通过FTP上传Python Function至Azure云后,出现函数列表无法加载的问题。经排查,发现是由于`requirements.txt`中的依赖包未被正确安装。解决方法为:在本地安装依赖包到`.python_packages/lib/site-packages`目录,再将该目录内容上传至云上的`wwwroot`目录,并重启应用。最终成功加载函数列表。
|
2月前
|
JavaScript
箭头函数与普通函数(function)的区别
箭头函数是ES6引入的新特性,与传统函数相比,它有更简洁的语法,且没有自己的this、arguments、super或new.target绑定,而是继承自外层作用域。箭头函数不适用于构造函数,不能使用new关键字调用。
|
2月前
|
数据可视化 开发者 索引
详解Wireshark LUA插件函数:function p_myproto.dissector(buffer, pinfo, tree)
在 Wireshark 中,LUA 插件通过 `function p_myproto.dissector(buffer, pinfo, tree)` 扩展协议解析能力,解析自定义应用层协议。参数 `buffer` 是 `PacketBuffer` 类型,表示原始数据包内容;`pinfo` 是 `ProtoInfo` 类型,包含数据包元信息(如 IP 地址、协议类型等);`tree` 是
89 1
|
2月前
|
JavaScript
箭头函数与普通函数(function)的区别
箭头函数是ES6引入的新语法,相比传统函数表达式更简洁,且没有自己的this、arguments、super或new.target绑定,而是继承自外层作用域。这使得箭头函数在处理回调和闭包时更加灵活方便。
|
2月前
|
C++ 容器
函数对象包装器function和bind机制
函数对象包装器function和bind机制
22 0
|
4月前
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.
|
4月前
|
安全 JavaScript 应用服务中间件
【Azure Function App】如何修改Azure函数应用的默认页面呢?
【Azure Function App】如何修改Azure函数应用的默认页面呢?
|
4月前
|
C# C++ Python
【Azure 应用服务】Azure Durable Function(持久函数)在执行Activity Function时候,因为调用函数名称错误而导致长时间无响应问题
【Azure 应用服务】Azure Durable Function(持久函数)在执行Activity Function时候,因为调用函数名称错误而导致长时间无响应问题
|
5月前
|
C++ 运维
开发与运维函数问题之使用std::function实现回调函数的示例如何解决
开发与运维函数问题之使用std::function实现回调函数的示例如何解决
41 7
|
4月前
|
SQL JavaScript 前端开发
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题

热门文章

最新文章