本篇参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_functions

我们在Salesforce LWC学习(十) 前端处理之 list 处理 篇中简单地介绍了一些数组常用的list的方法,其中可以看到(item,index) => {//TODO}的模式,比如 demo中forEach的写法

inputFields.forEach(field => {
field.reset();
});

前端不好的童鞋(包括我)可能也没有细想,毕竟这个是规范,而且文档就这么写的,就正常用了,深入学习一下,这种模式在js中叫做 箭头函数。

我们在程序中经常声明函数表达式,比如以下两种声明函数的方式。

//第一种
let function_expression = function [name]([param1[, param2[, ..., paramN]]]) {
statements
};
//第二种
function name([param,[, param,[..., param]]]) {
[statements]
}

这种函数好处是可重用,但是有时候我们需要的只是完成某种特定功能的一个匿名的函数,不需要其他人调用,这时候我们可以考虑箭头函数,他的优点是比函数表达式更简洁,更适用于在那些本来需要匿名运行的地方,比如 对某一数组进行sort,不对所有的数组sort,只是某个数组 特定的sort,我们更方便写法就是使用箭头函数。比如 integerArray这个数组实现了按照数字大小进行排序。简简单单的一行表达式,便可以将这个功能实现。

this.integerArray.sort((a,b) => a - b);

箭头表达式基本概念有了以后,说一下箭头表达式的语法。

1. 全格式写法:全格式写法通常用于参数超过一个,处理逻辑超过1行的情况,我们针对多个参数直接使用逗号分隔,使用()对他们进行维护到一组,然后 => 以后在花括号{}中进行逻辑语句的书写。

(param1, param2, …, paramN) => { statements } 

比如下面的例子为校验页面中所有的 input是否满足入力条件,不满足的会在通过checkValidity暴露出来。这里的 reduce方法里面需要添加的就是一个函数,我们在这里就使用箭头函数去搞定这个功能,使整体代码看上去更简洁。两个参数使用()来包含,方法体使用大括号{}来包含逻辑。

let allInputList = Array.from(this.template.querySelectorAll('lightning-input'));
const allValid = allInputList.reduce((validSoFar, inputFields) => {
inputFields.reportValidity();
return validSoFar && inputFields.checkValidity();
}, true);

2. 当逻辑处理只有一行格式写法:当参数包含一个或者多个,但是逻辑处理只有一行可以考虑以下的写法。

(param1, param2, …, paramN) => expression 这种写法相当于(param1, param2, …, paramN) =>{ return expression; }

下面的例子用于对数字进行升序排序,因为逻辑处理只有一行,所以我们只需要通过表达式方式只有一行即可。

this.integerArray.sort((a,b) => a - b);

3. 有一个参数格式写法:参数区域的括号是可选的,可写可不写,都是正确的方式。如果后面的操作逻辑也只有一行,也可以按照2步骤中不写大括号内容{}

// 当只有一个参数时,圆括号是可选的:
(singleParam) => { statements } 等价于singleParam => { statements }

下面的例子用于lwc中输入框的内容重置,因为参数区域只有一个参数,所以可以不用使用括号。

const inputFields = this.template.querySelectorAll(
'lightning-input-field'
);
if (inputFields) {
inputFields.forEach(field => {
field.reset();
});
}

下面是来自官方的demo。

elements.map(function(element) {
return element.length;
}); // 返回数组:[8, 6, 7, 9] // 上面的普通函数可以改写成如下的箭头函数
elements.map((element) => {
return element.length;
}); // [8, 6, 7, 9] // 当箭头函数只有一个参数时,可以省略参数的圆括号
elements.map(element => {
return element.length;
}); // [8, 6, 7, 9] // 当箭头函数的函数体只有一个 `return` 语句时,可以省略 `return` 关键字和方法体的花括号
elements.map(element => element.length); // [8, 6, 7, 9]

除了这种方式的箭头函数,箭头函数也可以有一个简写体或者常见的块体。

比如我们常规的函数写法为:

var func = (x, y) => { return x + y; }; //常规编写 明确的返回值

一个参数使用箭头函数可以省略成

var func = x => x * x;   

所以来一个进行练习,下面是使用箭头函数生命的函数,常规函数应该写成什么呢?

let add = x => y => x + y;

答案如下:

const add = function(x) {
return function(y) {
return x + y;
}
}

我们想要调用这个方法只需要 add(x)(y) 即可。

总结:本篇针对js基础薄弱的小伙伴简单地介绍了箭头函数的使用,在我们日常工作中这种写法司空见惯,不过还是要掌握好基础比较好。篇中有错误地方欢迎指出,又不懂欢迎留言。

Salesforce Javascript(二) 箭头函数的更多相关文章

  1. 02、Java的lambda表达式和JavaScript的箭头函数

    前言 在JDK8和ES6的语言发展中,在Java的lambda表达式和JavaScript的箭头函数这两者有着千丝万缕的联系:本次试图通过这篇文章弄懂上面的两个"语法糖". 简介 ...

  2. 【javascript】箭头函数

    ES6标准新增了一种新的函数:Arraw Function(箭头函数). x => x * x 这个函数相当于 function (x){ return x * x; } 题外话:user st ...

  3. Javascript二(函数详解)

    一.函数            Javascript是一门基于对象的脚本语言,代码复用的单位是函数,但它的函数比结构化程序设计语言的函数功能更丰富.JavaScript语言中的函数是"一等公 ...

  4. JavaScript ES6箭头函数指南

    前言 胖箭头函数(Fat arrow functions),又称箭头函数,是一个来自ECMAScript 2015(又称ES6)的全新特性.有传闻说,箭头函数的语法=>,是受到了CoffeeSc ...

  5. [JavaScript]ECMA-6 箭头函数

    概述 箭头函数的作用是为Js提供一种函数的简写方法,箭头函数作用域内不包含this, arguments, super, or new.target,并且不能用于对象的构造函数: 基本语法 [(][p ...

  6. javascript es6 箭头函数

    1.箭头函数示例 let add = (a,b) => a + b         //没有语句块时,默认作为返回值 add(1,2); var multi = (a,b) => {ret ...

  7. 动态导航栏和JavaScript箭头函数

    动态导航栏和JavaScript箭头函数 今天我们来写一下动态的导航栏,并且学一下JavaScript的箭头函数等相关问题. 样式如下所示: html中执行代码如下所示: <!DOCTYPE h ...

  8. this 指向详细解析(箭头函数)

    前言 this 指向问题是入坑前端必须了解知识点,现在迎来了ES6时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,遂有此文 在非箭头函数下, this 指向调用其所在函数的对象,而 ...

  9. [转载]this 指向详细解析(箭头函数)

    本文转自:http://www.cnblogs.com/dongcanliang/p/7054176.html 为了以后更方便的查看,便做了转载 前言 this 指向问题是入坑前端必须了解知识点,现在 ...

随机推荐

  1. oracle impdp 数据迁移 至RDS 亚马逊云

    背景: 公司年底打算将aws rds11.2.0.4 oracle 数据库升级到19c,所以需要进行升级测试,所以需要我把线上的库数据迁移到一台测试的rds oracle 亚马逊云的数据库中,然后升级 ...

  2. 用 Java 拿下 HTML 分分钟写个小爬虫

    本文适合有 Java 基础知识的人群 本文作者:HelloGitHub-秦人 HelloGitHub 推出的<讲解开源项目>系列,今天给大家带来一款开源 Java 版一款网页元素解析框架- ...

  3. Spring Security如何优雅的增加OAuth2协议授权模式

    一.什么是OAuth2协议? OAuth 2.0 是一个关于授权的开放的网络协议,是目前最流行的授权机制. 数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据.系统从而产生一个短期的进入令 ...

  4. Apache Pulsar 2.6.1 版本正式发布:2.6.0 功能增强版,新增 OAuth2 支持

    在 Apache Pulsar 2.6.0 版本发布后的 2 个月,2020 年 8 月 21 日,Apache Pulsar 2.6.1 版本正式发布! Apache Pulsar 2.6.1 修复 ...

  5. 【JAVA】给大家推荐一道有意思的java测试题。你知道答案吗?

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985, QQ986945193 公众号:程序员小冰 public class Test { /** * * ...

  6. Shader 语义

    在书写HLSL shader程序时,输入和输出变量需要拥有他们 含义来表明语义.这在HLSL shader中是一个标准的做法. Vertex shader 输入语义 主顶点着色器函数(被指令 #pra ...

  7. 【jmespath】—1. 基础用法

    一.jsonpath 之前我写接口自动化测试时候,对于复杂的json返回,会使用jsonpath这个第三方库,就像写xpath一样,方便的查询json元素. 因为之前写WEB自动化时候,总用xpath ...

  8. POJ - 3851-Wormholes(SPFA判负环)

    A friend of yours, an inventor, has built a spaceship recently and wants to explore space with it. D ...

  9. 利用负margin-bottom去除列表最后一个li元素的border-bottom

    负margin-bottom不会影响元素的实际大小,只会使得后面的元素上移 以第二个里为例,由于第一个li的margin-bottom导致第二个li被上拉1px,第二个li最上面的1px高度覆盖在第一 ...

  10. Mybatis源码学习第七天(插件源码分析)

    为了不把开发和源码分析混淆,决定分开写; 接下来分析一下插件的源码,说道这里老套路先说一个设计模式,他就是责任链模式 责任链模式:就是把一件工作分别经过链上的各个节点,让这些节点依次处理这个工作,和装 ...