一元函数(即monadic)是一个只接受一个参数的函数。它代表函数接受的单个参数。

const unaryFunction = (a) => console.log(a + 10); // Add 10 to the given argument and display the value
复制代码

参数扩展与收集

ECMAScript 6 新增了扩展操作符,使用它可以非常简洁地操作和组合集合数据。扩展操作符最有用的场景就是函数定义中的参数列表,在这里它可以充分利用这门语言的弱类型及参数长度可变的特点。扩展操作符既可以用于调用函数时传参,也可以用于定义函数参数。

  1. 扩展参数

function getProduct(a, b, c = 1) { return a * b * c;
} let getSum = (a, b, c = 0) => { return a + b + c;
} console.log(getProduct(...[1,2])); // 2
console.log(getProduct(...[1,2,3])); // 6
console.log(getProduct(...[1,2,3,4])); // 6 console.log(getSum(...[0,1])); // 1
console.log(getSum(...[0,1,2])); // 3
console.log(getSum(...[0,1,2,3])); // 3
复制代码
  1. 收集参数

在构思函数定义时,可以使用扩展操作法把不同长度的独立参数组合为一个数组。

function getSum(...values) {// 顺序累加values中的所有值// 初始值的总和为0return values.reduce((x,y) => x + y, 0);
}
console.log(getSum(1,2,3)); // 6
复制代码
// 不可以
function getProduct(...values, lastValue) {} // 可以
function ignoreFirst(firstValue, ...values) { console.log(values);
} ignoreFirst(); // []
ignoreFirst(1); // []
ignoreFirst(1,2); // [2]
ignoreFirst(1,2,3); // [2, 3]
复制代码
let getSum = (...values) => { return values.reduce((x, y) => x + y, 0);
} console.log(getSum(1,2,3)); // 6
复制代码
function getSum(...values) { console.log(arguments.length); // 3 console.log(arguments); // [1, 2, 3] console.log(values); // [1, 2, 3]
} console.log(getSum(1,2,3));
复制代码

未完结!更多内容尽情期待下一节~

【深入理解JS核心技术】欢迎各位观众老爷,求点赞,求关注,求转发~

低调务实优秀中国好青年 (简介) && 附加答案

中文 | English

一个 ☝️ 正经的前端学习 开源 仓库,养成一个好习惯,遇见更好的 自己。一个人可能走得更快,但一群人会走得更远。(非常口语化的,手写总结)

欢迎大家前来讨论,如果觉得对你的学习有一定的帮助,欢迎点个Star (此仓库每天都会准时更新)

【深入理解JS核心技术】14. 什么是一元函数相关推荐

  1. 【深入理解JS核心技术】2. 什么是原型链?

    原型链是用于在现有对象的基础上构建新类型的对象.它类似于基于类的语言中的继承. 对象实例的原型可以通过 Obeject.getPrototypeOf(object) 或 proto 属性获得,而构造函 ...

  2. 简单粗暴地理解js原型链–js面向对象编程

    简单粗暴地理解js原型链–js面向对象编程 作者:茄果 链接:http://www.cnblogs.com/qieguo/archive/2016/05/03/5451626.html 原型链理解起来 ...

  3. 《Java工程师成神之路》深入理解Java核心技术(基础篇)

    学习目标: 深入理解Java核心技术(基础篇) 学习内容: 1.面向对象的五大基本原则 (1)单一职责原则:一个类应该有且只有一个去改变它的理由,这意味着一个类应该只有一项工作. (2)开放封闭原则: ...

  4. 彻底理解js中this

    相关博文:http://blog.csdn.net/libin_1/article/details/49996815 彻底理解js中this的指向,不必硬背. 首先必须要说的是,this的指向在函数定 ...

  5. 深入理解js的执行机制

    写在前面 javascript在浏览器中被浏览器的js引擎执行解释,从执行上下文的角度分析一下js的执行机制 执行上下文 执行上下文被定义成javascript引擎在处理理解js代码时,所创建的一个动 ...

  6. 【学习笔记】深入理解js原型和闭包(5)——instanceof

    又介绍一个老朋友--instanceof. 对于值类型,你可以通过typeof判断,string/number/boolean都很清楚,但是typeof在判断到引用类型的时候,返回值只有object/ ...

  7. 简单理解js闭包、类型引用....第一章

    js 闭包函数.类型引用.this指向.对象原型链...这些东西让我们对js又爱又恨!js虐我千百遍,我待js如初恋. 很多初学者一开始会觉得这些概念没什么用,导致对这些东西产生一种抵抗力.接下来我们 ...

  8. 理解js中this的指向

    彻底理解js中this的指向 JavaScript 的 this 指向问题深度解析 转载于:https://www.cnblogs.com/jeacy/p/6509616.html

  9. 深入理解js系列一作用域是什么

    title: 深入理解js系列一作用域是什么? date: 2018-02-06 02:15:59 tags: 深入理解js系列 作用域 categories: JavaScript 作用域是什么? ...

  10. 【学习笔记】深入理解js原型和闭包(11)——执行上下文栈

    继续上文的内容. 执行全局代码时,会产生一个执行上下文环境,每次调用函数都又会产生执行上下文环境.当函数调用完成时,这个上下文环境以及其中的数据都会被消除,再重新回到全局上下文环境.处于活动状态的执行 ...

最新文章

  1. 聊聊 Spring Cloud Config
  2. 【page-monitor 前端自动化 上篇】初步调研
  3. stm32 无符号整形_STM32中“unsigned short”和“unsigned int”的区别是什么?
  4. node-inspector 在chrome里调试node代码
  5. wince模拟器访问网络_在Wince模拟器接入网络的方法
  6. java开始到熟悉60
  7. 模板模式 php,PHP设计模式5-模板模式
  8. seaweedfs使用说明
  9. Trakr:自制力差人的计数应用
  10. 简单的使用Python处理Excel数据文件
  11. 如何把pdf分割成多个?怎么把pdf文件分成多个?
  12. 删除文件出现“文件正在使用或正在打开”
  13. Numpy创建正态分布和均匀分布
  14. Matlab中fit函数的局限以及其解决方案
  15. mongodb java api chm_MongoDB中文手册chm版
  16. 字符串操作函数的实现【详解】
  17. Java基础-常见IO五种模型
  18. xiaopiu怎么导出html,xiaopiu原型工具
  19. 电改背景下,售电公司如何利用需求侧响应模式
  20. hexo提交报错 unable to access ‘https://github.com/*/*.github.io.git/‘: Couldn‘t resolve host ‘github.com

热门文章

  1. 调研报告格式种类及相关调研报告的写法
  2. 碧桂园建筑机器人造楼,梦照进现实还是“海市蜃楼”?
  3. 网分测花岗岩介电常数测试方案
  4. 转录组:STAR-Fusion融合基因
  5. 【毕业设计】67-基于单片机的三相电压型SPWM逆变器控制设计及应用(仿真、原理图、源代码、低重复参考文档、答辩PPT、英文文献)
  6. lycos搜索引擎_常用的搜索引擎都有哪些特点?
  7. 计算机辅助设计技术基础教程,《计算机辅助设计技术基础》课程教案.doc
  8. m6000查看端口状态_M6000常用维护命令
  9. python构造icmp数据包_python – 在scapy中发送ICMP数据包并选择正确的接口
  10. 如何解决BIOS自动更新,不断循环更新,无法进入系统