00:00
啊,大家好,那么我是风雨,那我们我们刚才呢,讲了这个函数参数的默认值,以及函数的参数的传递的时候呢,可以跟结构赋值来结合来使用啊,那现在呢,我们接着再来聊一个东西啊,还是我们这个函数的参数,不过这个参数呢,哎,长得有点奇怪了,比如说艾文。那这里边呢,我要来输出一些东西对吧?那输出啥呢?呃,我也不知道,那我们先来看一下我们传什么东西吧,比如说我传了一些参数进去啊,传了个123456789啊,还可以传些数组对吧?转空数组还可以传一个空对象进去,对吧?这是我们传递参数,OK,那这时候我要来接收这些参数怎么办?啊,我得请个aecd,我得请很长很长的这个来接受他啊,这个呢是我们用行菜方式,还可以说什么呢,还可以在里面使用个argument。对吧,Arguments是不是把我们的这些参数统统都接收到了,对吧?那就是不定餐的形式啊,可以使用arguments。
01:01
那么要注意的是呢,我们使用这个argument的时候呢,Argument是什么?是一个类数组是吧?像一个数组结构一样,但是呢,它又没有数组的特性,用不了数组的方法,那有的时候比如说我需要对这里边来进行这个进行数组的操作的时候呢,你虽然长得像数组,但是你不是数组,用不了数的方法,那这时候可以怎么办呢?我们这时候呢,可以接触到一个新的东西,这个东西呢,叫做rest参数。Rest参数什么意思呢?诶,我们来看一下,好吧,我们先来看一下,现在看线上再来总结啊,再来总结啊,这地方rest参数怎么写呢?可以这么写,点点点一个,比如说叫做。AR。那这时候呢,我们来输出一个AR。我们输出这个变量啊,我们来看一下会发生什么情况来保存,你发现这地方16行输出了一个数组,数组里面有九项,12345677项,八项,九项刚好是九项,九项第一项就是我们这个,从我们参数十参第一位一直到最后一位。
02:08
对不对,那它是不是有点像阿格门啊,有点像阿格那么像阿格门。像个数组一样,它可以把这些参数通通的都来接收到,那么你到底是数组还是内数组呢?哎,到底是数组还是列数组呢?我们可以来看一下它的这个构造函数,那它的构造函数,你发现它的构造函数谁呀,就是一个。这圆形的这个这个数组的构造函数A对吧?还可以通过什么呢?通过我们AR点上is a is。这个方法是吧?诶来确定一下你是不是个数组来保存,你发现是个处是吧?这个方法告诉我们,诶这个东西就是个数组,那么你说数组的时候有什么好处呢?是不是就是可以调用了我们数组的那些个,呃,非常好使的那些方法,对吧?诶这个呢,就是我们的rest参数啊,它呢使用的是点点点这样一个变量,那这个变量呢,就是个数组了,他把所有的这些项目都接收到了,要注意的是这个rest参数呢。
03:08
他并不一定一个人要把所有参数接触的,他也可以跟别人共享,怎么共享呢?比如说我前面我少写两个啊。来手写两个,我前面这两个数字呢,诶我就得用数字来接收,我这个呢,只接受后面这两个,这怎么办呢?诶这个时候呢,我们可以写两个变量来把前面这两个变量先接收了,那后面的没有具体的行参来对应的时候呢,都被我们这个rest参数来来接收到了,能明白吗?所以这个时候当我们来输出一个比如说A的时候。再来个B,再来一个。AR的时候呢,它就能输出什么呀,诶输出这有个逗号啊,少了个逗号来保存它就能够,你看A对应了一对吧,B呢对应二,那后面的时参没有参数来对应了,那通通都被我们的rest参数来进行结束了,能明白吗?所以呢,这个rest参数呢,它接着是当前这个时参。
04:05
你看A对一,B对应二,那第三个参数以后没有具体的13,或者说他一来就遇到了这个rest参数,那rest这个参数呢,会把当前这个参数往后的所有参数全部接收了啊全部接收,所以呢,要注意的是使用它的时候,它的写法一定要在函数参数的最后一个,为什么呢?因为这个时候。如果说我在前面来写啊,诶点点点。逗号这个时候虽然说看起来是三个形参,但是它并不会这么,R并不会说我A呢对应前面两个,我A呢对应这个空数组,B呢对应这个空对象啊,它不会这样看,它一遇到它全部就跟你接触了,所以这个时候AB呢,诶都是没有的是吧?哎,不可以写到前面去了啊,不可以写到前面去,你一保存的还给你报错了,为什么他告诉你rest参数不能写到前面,一定只能写到最后一个,能明白吗?啊只能写到最后一个,那就我们使用AB的时候也没有了是吧?没有我们删掉啊删掉。
05:05
向量来保存,那这时候就它了,它把全部交掉啊,这个要注意的是使用它的时候呢,一定要注意要在函数参数的最后一项啊,不可以在前面,不以在前面。那这时候呢,你看ABC3个,前面三个这个形态,那陷阱里面来对吧?诶陷阱前面大哥来,那前面大哥把这三个参数取走了,那他只能接收到这个对象了,那他这个时候呢,诶就是一个数组啊,它无论如何都是一个数组,数组里面只有一项的时候呢,诶就是那一项就行了,对吧?那这个呢,是我们这个函数的rest参数啊rest参数那它比argument的好处在哪呢?好处我们刚才已经说了,它的比argument的好处就在于它是个数组。是吧?诶可以调用数字的方法,那在我们之前使用arguments的时候呢,我们还得把arguments来进行一下这个转换,对吧,可以怎么转呢?ES5的写法是这样的哈,一个空数组。来点上我们这个slice。
06:00
诶点LA,那LA,比如说S以后呢,我们是通过一个空数组调用这个方法,那这个方法它来切割的时候是切割这个数组是吧,那我们呢,还可以通过什么,通过比如说我们的扩是吧,我们的扩。来指向谁呢?指向我们的arguments是吧?诶这通过这种方式呢,呃,来对它进行这个把类数组转化为数组,那当然了,这个地方呢,我们也不需要去讨论这种方式啊,因为以后在我们有了ES6以后呢,我们这个rest参数呢,就可以解决了是吧?并且呢,还非常非常形象啊,要注意的一定要记住的是rest参数一定只能在函数参数的最后一位,如果说不在最后一位,那么它就会报错啊,就会报错,这个是一定要注意的地方好吗?然后呢,就是我们这个函数呢,它是有个扔死属性的啊,不知道大家知不知道,那么函数的认识属性的,我们可以来看一下。比如说呃,这个地方呢,我们输不输出啊,无所谓的,我们就不输出它了,对吧,输出它,那它那一个这个一些参数对吧,那最后呢,我们来logo一下。
07:08
来了。Log,谁呢?我们log这个函数。哎,点上冷死。那函数的认识反问什么呀?函数的认返回的是什么呀?函数的认识返回的是不是行参的个数呀?对吧?那argument呢?Argument返回的是实参的个数对不对?那要注意的是,当我们函数的这个参数有rest参数的时候呢,这个length是不会去计算它的,所以这个时候呢,它返回的应该是三而不是四,因为返回的是行参的个数吗?那行参看起来有四个,但是由于最后一个是rest参数,所以不会被认识计算进来,所以这个地方呢,它返回的应该是个三,对吧,返回三总会这个地方,诶写错了是吧?诶写错了。那写错这个地方该怎么写呢?呃,这个我们可以在,我们可以不这么写啊,不这么写来关掉,那积分呢,我们一样的是来个函数调用啊,我们在里边来访问也是可以的是吧?那可以的,我们一样的拿到这个这个ione啊ione,然后点上认S对吧,点Les来看一下来保存,诶返回的是个三对吧,去不它,那如果说把这个把不使用rest识的参数呢,我们就使用个普通的参数呢,那这时候呢,诶我们说lengths返回的是我们行参的个数,也就是说我后面再来一些乱七八糟的,比如说QWG啊,这么非常多,我们的行参的非常多,我们实参的只有这么几个,那这时候呢,我们来看一下它返回到底是四呢,还是这些的长度对吧?诶保存你发现啊,它报错了对吧,哪个地方报错了呀,我们这地方两个对号对吧?诶来保存它返回是个九,那九呢,就是说是行参的个数啊,那阿根分子呢。
08:51
ARMENT。还是点认识。诶,Arguments的认识呢,返回的是十参的个数啊,这个一定要注意啊,这个是四个,那这个FN点认识呢,它是这个九个啊九个,然后要注意的是刚才说的哈,一旦参数里面有rest参数的时候呢。
09:13
它就不会来计算我们的这个rest函数了啊,要去掉它,那现在呢,看起来有两个,那去掉一个rest呢,应该是一个才对,是吧,所以呢是一和四能明白吗?那这个呢,是我们这个。这个参数啊,好吧,那就谢谢大家。
我来说两句