JavaScript之自定义函数的高级参数

简介: 引入基本上每个编程语言都有自定义函数。自定义函数大大增加了大型项目代码可读性,造就了如今纷繁的代码世界。有经验的程序员不难发现,在一些高级语言中,函数的参数其实并不是一个值或几个值那么简单。python这种简洁精炼的语言都会涉及“可选参数”“形参”等多个概念。那JS是不是也带有一些跳脱于“简单输入数值”功能的参数呢?答案是显然的。

引入


基本上每个编程语言都有自定义函数。自定义函数大大增加了大型项目代码可读性,造就了如今纷繁的代码世界。

有经验的程序员不难发现,在一些高级语言中,函数的参数其实并不是一个值或几个值那么简单。python这种简洁精炼的语言都会涉及“可选参数”“形参”等多个概念。

那JS是不是也带有一些跳脱于“简单输入数值”功能的参数呢?答案是显然的。

今天我们就大致了解一下js函数的高级参数,主要包括argumentsrest


1.arguments


这个参数不需要我们特别去设置,他是javaScript函数创建之时便自带的。并且这个参数是在函数内部作用的——

功能是指向函数调用者传入的所有参数

arguments本质也是一个对象,可以用索引调取元素。但它本身不是一个array。

我们一般用这个arguments来实现一个可选参数的功能。比如我们接下来需要实现一个b为可选参数的功能,当传入的变量只有两个的时候,b默认为空值

function funtc(a, b, c) {
    if (arguments.length === 2) {
        // 如果拿到2个参数,实际传入的参数是a和b,c为undefined
        c = b; // 把b赋给c
        b = null; // b变为空值
    }
    // ...
}

这样就设计了一个func(a,[,b],c)的带有可选参数的自定义函数。

在arguments这里需要注意的还有一点,arguments取出的是使用者传入的所有参数,而不是符合定义条件的参数

什么意思呢?其实就是“即便你没有定义任何参数,只要你传入了参数,arguments就能调出”

function aaa() {
    return arguments[0];

运行结果显而易见:

aaa(1);//1
aaa(5);//5


2. reset参数


正如前面提到的,JS中你可以传入比已定义的参数多的参数,只不过在超过JS定义的参数之后,别的参数可能起不到作用。

但如果我们希望获取除了已经定义的参数之外的参数呢?

用arguments来进行循环遍历取出所有参数固然是一个办法,但不算是一个好办法。

于是ES6中引入了rest参数,只要我们在函数定义时加上...rest即可开启他的功能。这时候我们取出剩下的参数的操作就变得很简单明了了——

function func(x, y, ...rest) {
    console.log('x 是 ' + x);
    console.log('y 是 ' + y);
    console.log(rest);
}

那么我们输入输出的结果就可以是——

func(1,2,2,3,4)
//x=1
//y=2
//array[2,3,4]

注意rest获取的是一个数组array哦


相关文章
|
3月前
|
前端开发
用html+javascript打造公文一键排版系统3:获取参数设置、公文标题排版
用html+javascript打造公文一键排版系统3:获取参数设置、公文标题排版
|
21天前
|
JavaScript 前端开发
.js方法参数argument
【10月更文挑战第26天】`arguments` 对象为JavaScript函数提供了一种灵活处理参数的方式,能够满足各种不同的参数传递和处理需求,在实际开发中具有广泛的应用价值。
36 7
|
3月前
|
JavaScript 前端开发
JavaScript基础知识-函数的参数
关于JavaScript函数参数基础知识的介绍。
27 4
JavaScript基础知识-函数的参数
|
3月前
|
JavaScript 前端开发
JavaScript 函数参数
JavaScript 函数参数
31 3
|
3月前
|
前端开发 JavaScript
前端JS截取url上的参数
文章介绍了两种前端JS获取URL参数的方法:手动截取封装和使用URLSearchParams。
56 0
|
6月前
|
前端开发 JavaScript 安全
高级前端开发需要知道的 25 个 JavaScript 单行代码
1. 不使用临时变量来交换变量的值 2. 对象解构,让数据访问更便捷 3. 浅克隆对象 4. 合并对象 5. 清理数组 6. 将 NodeList 转换为数组 7. 检查数组是否满足指定条件 8. 将文本复制到剪贴板 9. 删除数组重复项 10. 取两个数组的交集 11. 求数组元素的总和 12. 根据指定条件判断,是否给对象的属性赋值 13. 使用变量作为对象的键 14. 离线状态检查器 15. 离开页面弹出确认对话框 16. 对象数组,根据对象的某个key求对应值的总和 17. 将 url 问号后面的查询字符串转为对象 18. 将秒数转换为时间格式的字符串 19.
58 3
高级前端开发需要知道的 25 个 JavaScript 单行代码
|
5月前
|
JavaScript 前端开发 网络架构
JavaScript编码之路【对象的增强、ES6新特性之函数的默认值设置 、rest参数 (剩余参数)、拓展运算符、对象与数组的解构赋值】
JavaScript编码之路【对象的增强、ES6新特性之函数的默认值设置 、rest参数 (剩余参数)、拓展运算符、对象与数组的解构赋值】
57 1
|
6月前
|
JavaScript
JS获取浏览器地址栏的多个参数值的任意值
JS获取浏览器地址栏的多个参数值的任意值
49 3
|
5月前
|
存储 资源调度 前端开发
JavaScript 使用axios库发送 post请求给后端, 给定base64格式的字符串数据和一些其他参数, 使用表单方式提交, 并使用onUploadProgress显示进度
使用 Axios 发送包含 Base64 数据和其他参数的 POST 请求时,可以通过 `onUploadProgress` 监听上传进度。由于整个请求体被视为一个单元,所以进度可能不够精确,但可以模拟进度反馈。前端示例代码展示如何创建一个包含 Base64 图片数据和额外参数的 `FormData` 对象,并在上传时更新进度条。后端使用如 Express 和 Multer 可处理 Base64 数据。注意,实际进度可能不如文件上传精确,显示简单加载状态可能更合适。
|
5月前
|
JavaScript 前端开发 数据格式
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
261 0