持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天,点击查看活动详情
✔个人主页:Mr.Darcy8的掘金主页
🎉欢迎关注👀点赞👍收藏⭐留言📝以及交流人生哲理🎈学习心得🎁
引入
基本上每个编程语言都有自定义函数。自定义函数大大增加了大型项目代码可读性,造就了如今纷繁的代码世界。
有经验的程序员不难发现,在一些高级语言中,函数的参数其实并不是一个值或几个值那么简单。python这种简洁精炼的语言都会涉及“可选参数”“形参”等多个概念。
那JS是不是也带有一些跳脱于“简单输入数值”功能的参数呢?答案是显然的。
今天我们就大致了解一下js函数的高级参数,主要包括arguments和rest
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哦
新人上路,欢迎互相帮扶~Mr_darcy8的掘金主页
可以的话给咱点个赞呗💖