Salesforce Javascript(二) 箭头函数
本篇参考: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(二) 箭头函数的更多相关文章
- 02、Java的lambda表达式和JavaScript的箭头函数
前言 在JDK8和ES6的语言发展中,在Java的lambda表达式和JavaScript的箭头函数这两者有着千丝万缕的联系:本次试图通过这篇文章弄懂上面的两个"语法糖". 简介 ...
- 【javascript】箭头函数
ES6标准新增了一种新的函数:Arraw Function(箭头函数). x => x * x 这个函数相当于 function (x){ return x * x; } 题外话:user st ...
- Javascript二(函数详解)
一.函数 Javascript是一门基于对象的脚本语言,代码复用的单位是函数,但它的函数比结构化程序设计语言的函数功能更丰富.JavaScript语言中的函数是"一等公 ...
- JavaScript ES6箭头函数指南
前言 胖箭头函数(Fat arrow functions),又称箭头函数,是一个来自ECMAScript 2015(又称ES6)的全新特性.有传闻说,箭头函数的语法=>,是受到了CoffeeSc ...
- [JavaScript]ECMA-6 箭头函数
概述 箭头函数的作用是为Js提供一种函数的简写方法,箭头函数作用域内不包含this, arguments, super, or new.target,并且不能用于对象的构造函数: 基本语法 [(][p ...
- javascript es6 箭头函数
1.箭头函数示例 let add = (a,b) => a + b //没有语句块时,默认作为返回值 add(1,2); var multi = (a,b) => {ret ...
- 动态导航栏和JavaScript箭头函数
动态导航栏和JavaScript箭头函数 今天我们来写一下动态的导航栏,并且学一下JavaScript的箭头函数等相关问题. 样式如下所示: html中执行代码如下所示: <!DOCTYPE h ...
- this 指向详细解析(箭头函数)
前言 this 指向问题是入坑前端必须了解知识点,现在迎来了ES6时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,遂有此文 在非箭头函数下, this 指向调用其所在函数的对象,而 ...
- [转载]this 指向详细解析(箭头函数)
本文转自:http://www.cnblogs.com/dongcanliang/p/7054176.html 为了以后更方便的查看,便做了转载 前言 this 指向问题是入坑前端必须了解知识点,现在 ...
随机推荐
- 接口测试中postman环境和用例集
postman的环境使用 postman里有环境的设置,就是我们常说的用变量代替一个固定的值,这样做的好处是可以切换不同的域名.不同的环境变量,不同的线上线下账户等等场景.下面就看下怎么用吧. 创建一 ...
- 深入探究.Net Core Configuration读取配置的优先级
前言 在之前的文章.Net Core Configuration源码探究一文中我们曾解读过Configuration的工作原理,也.Net Core Configuration Etcd数据源 ...
- Linux下关闭和开启IPv6的方法
确认IPV6是否开启 在Linux下确认IPv6是否已经被启用,可以从三个方面确定. 1.使用ifconfig查看自己的IP地址是否含有IPv6地址. eth0 Link encap:Ethernet ...
- 让“不确定性”变得有“弹性”?基于弹性容器的AI评测实践
0. 前言 AI的场景丰富多彩,AI的评价方法百花齐放,这对于设计一套更通用的评测框架来说,是一个极大的挑战,需要兼顾不同的协议,不同的模型环境,甚至是不同的操作系统.本文分享了我们在AI评测路上的一 ...
- android studio生成aar包
android studio生成aar包并在其他工程引用aar包 http://blog.csdn.net/getchance/article/details/47257389 用Android st ...
- CTF线下awd攻防文件监控脚本
CTF线下awd攻防赛中常用一个文件监控脚本来保护文件,但是就博主对于该脚本的审计分析 发现如下的问题: 1.记录文件的路径未修改导致log暴露原文件备份文件夹:drops_JWI96TY7ZKNMQ ...
- AngularJS中的父作用域与自作用域
对于$scope上的原生类型,如$scope.name=""; 自作用域获取变量时,会查找作用域本身,找不到就会查找父作用域 修改时,若本作用域不存在,就会在本作用域创建一个变量, ...
- C#知识点:ref和Out关键字浅谈
首先我们要知道ref和out在C#里面是什么? 答:它们俩是C#里面的关键字. 他们俩是干啥的呢? 答:他们俩是方法参数的修饰符号,一但使用,方法定义和方法都用都要使用这个关键字,这一点是死规定. 好 ...
- 为什么选择H5游戏开发定制?
为什么选择H5游戏开发定制? 随着微信H5游戏推广带来的显著效果,越来越多的商家已经加入到游戏营销的队伍中来, 对H5小游戏有了解的商家都知道,[模板游戏]的价格往往低于[定制游戏]的价格,可是为什么 ...
- NetCore微服务实战体系:日志管理
一. 起始 进入NetCore时代,日志的使用有了很大的变化,因为跨平台以及虚拟化技术的使用,日志不能够再像Framework的方式直接记录在文本,文本其实也可以,但是日志的管理以及查看都不太方便.L ...