不定参数,即向函数传递的参数数目不固定,JavaScript 中 ES5 和 ES6 不定参数的写法不同。
2021/5/1 22:25:29
本文主要是介绍不定参数,即向函数传递的参数数目不固定,JavaScript 中 ES5 和 ES6 不定参数的写法不同。,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
ES5 中处理不定参数(arguments)
javascriptfunction sum() { let sum = 0 Array.from(arguments).forEach(function(item) { sum += item }) return sum } console.log(sum(1, 2, 3, 4)) // 10
ES6 中处理不定函数(Rest参数)
ES6 引入Rest参数(形式为 ...变量名
),用于获取函数的多余参数,这样就不需要使用 arguments
对象了。
Rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。故Rest参数理解为「剩下的所有参数」。
javascriptfunction sum(...num) { let sum = 0 Array.from(num).forEach(function(item) { sum += item }) return sum } console.log(sum(1, 2, 3, 4)) // 10
Rest参数的强大之处
- Rest参数可以将确定的参数在传值时分离出来(此时Rest参数必须排在参数最后),而如果使用
arguments
需在函数内部进行分离操作。看下面这个例子:
function sum(a, ...num) { //这里的a代表确定参数,可以有多个确定参数 let sum = 0 Array.from(num).forEach(function(item) { sum += item }) return a * 2 + sum } console.log(sum(1, 2, 3, 4, 5)) // 16
arguments
不是数组,所以不能直接使用数组的原生 API 如forEach
,而Rest参数是数组,可以直接使用数组的原生 API。对比下面两个例子:
// 使用 arguments function sum() { let num = 0 Array.prototype.forEach.call(arguments, function(item) { num += item * 1 }) return num } console.log(sum(1, 2, 3)) // 6 console.log(sum(1, 2, 3, 4)) // 10javascript
// 使用Rest参数 function sum(...nums) { let num = 0 nums.forEach(function(item) { num += item * 1 }) return num } console.log(sum(1, 2, 3)) // 6 console.log(sum(1, 2, 3, 4)) // 10
Rest参数与扩展运算符
在 ES6 中,Rest参数和扩展运算符都用符号 ...
来表示,但是表达的确实相反的意思。
Rest参数是将不定的参数「收敛」到数组中,而扩展运算符是将固定的数组内容「打散」到参数里去。
Rest参数与扩展运算符可以理解为互为逆运算。
百度网盘资源
这篇关于不定参数,即向函数传递的参数数目不固定,JavaScript 中 ES5 和 ES6 不定参数的写法不同。的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现