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

180 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天,点击查看活动详情

✔个人主页:Mr.Darcy8的掘金主页

🎉欢迎关注👀点赞👍收藏⭐留言📝以及交流人生哲理🎈学习心得🎁

引入

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

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

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

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

1.arguments

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

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

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

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

function funtc(a, b, c) {
    if (arguments.length === 2) {
        // 如果拿到2个参数,实际传入的参数是ab,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的掘金主页

可以的话给咱点个赞呗💖