00:00
哈喽,大家好,这个小节我们来学习一下ES6当中非常重要的一个内容,箭头函数。在ES里面呢,它允许我们使用箭头。来定义函数,这个箭头是什么呢?是等于号和大于号的一个结合体。来,我们来,允许我们来演示一下。走,来声明一个函数啊,Lett Fn等于之前我们的声明函数是这样子的。啊,现在来看一下Lett Fn等于小括号,然后后边跟上我们的箭头,后边跟上我们的画括号。可以看一下是省略了function这个关键字。啊,你想每一次生命函数都得写发是吧,现在你看一下这个都不用写了,直接写一个箭头完事啊,也是为了简化啊,然后呢,在小括号里边呢,我们去写这个行参A,逗号B,然后花号里呢,去写代码体,先别急,因为咱们做了重名的声明,所以他报了个错啊,再来,然后在里边写代码体,也可以有返回值,Return一个A加上B。
01:10
代码体里边的格式呢,跟之前函数代码体格式要求都是一样的。好,这是函数的一个声明,下边呢,咱们来去调用一下这个函数啊,调用函数方式呢,跟之前一样,都是函数名字,然后小括号,在小括号里边传入食参,比如我这来个一逗号二。拿一个变量来接收一下这个结果。Log来打印一下result保存一起来看一看,结果为三,没有问题。好,这是箭头函数的一个声明和调用,下面呢,我们来演示一下箭头函数,声明它的一个特性。它跟我们之前的函数声明有什么区别?看一下第一个this是静态的。这是尖头函数非常非常重要的一个特性,This值呢是静态的,那this呢,始终。
02:08
啊,始终是指向函数声明时所在座域。下的Z的值。它并没有自个儿的类啊,就是啊,我自个儿比方说咱们原来是吧,函数内部这一个这个呃,就是生构造函数吧,类的话会指向这个实例对象啊,而且呢,函数是谁来调我,我就this指向谁,但是箭头函数呢,This是静态的。它始终是指向啊,函数在声明时所在作用下类似那个值。无论你用别的方式去改变,比如用call apply什么等等方式去改变它的都是不会变的。来,我们演示一下。Get name。我呢,声明两个函数,一种方式呢,是用咱们的普通方式来定义,另外一种方式呢,咱们用的是箭头函数来定义。
03:06
在里边我们使用console log来输出一下,诶,稍等一下,我这写错了。OK,搞定在里边咱们来输出一下this.name下边这个也是一样子,Can this.name。我们主要是呢,想要通过输出的一个结果来论证啊,它的一个结论。然后咱们这呢也是一样啊,再再再再来做一个事情啊,再来做一个准备工作,就是设置这个window。啊,对象的内幕属性。啊,Window点等于一个上硅谷。然后咱们顺便再来创建一个对象,Cost school等于一个对象,然后name等于一个at硅谷。好,完成两个对象已经搞定,接下来的话呢,我们开始去调用这两个方法。
04:02
啊,首先我们先直接调用,直接调用get name普通的函数声明对吧,然后呢,还有一个get name2建头函数保存。那大家可以看一下啊,此时的话,它们两个结果是一样的,都是上规股啊,都是上规股,那么因为它们两个呢啊,就是直接调用的,像咱们普通函数啊,直接调用的话,它的Z值呢,是指向啊window的。啊,咱们接到函数这块呢,是因为在全局作用域下边声明的,所以说它this呢,也是指向这个window的。好,这是直接调用,下边呢,我们再使用扣。方法都有。我们知道,Co方法是可以改变函数内部Z的值的。OK get name,然后点call括弧,把它们指向这个对象。然后呢,Get name 2.callschool。
05:01
好,我们一起来看看效果怎么样保存。耶,他说过,然后这块not DeFine,咱们单词写错了啊,这块应该是个L保存。看一下上面这个呢,它发生了改变,哎,这个是谁呀,这个咱的普通函数的生命方式之前的,而你看咱们箭头函数这一块,它的值没有改变。就是依然是指向谁啊,依然是指向这个全局对象window。所以说要注意这点就是箭头函数,箭头函数this值是静态的,无论你用咱的方式啊去调它,它的this呢,始终是指向函数在声明时所在作用下的那个list值。好,这是第一个特点,也是最为重要的一个特点,This的静态特性。好,那么下面的话我们来看一下第二个注意事项,就是不能作为构造函数实例化对象。举个例子啊,比如说let person等于一个括弧。
06:03
啊,然后里边传参咱们之间会这么写是吧,Name age,然后this.name等于name啊,this.age等于一个age,做实体化好看一下,Let's me等于一个new,然后呢,Person。OK,写这个小H的话,咱们是30。R log打印一下这个密是吧。保存看一下,他说person is not a constructor说person呢,并不是一个构造器啊,所以说这点要注意啊,构造这个箭头函数不能作为这个构造函数去实例化对象啊,这也是一个注意事项。好,那么下边的话,第三个是不能使用arguments变量。啊,咱们知道在函数内部有一个特殊的变量叫arguments,用来保存时参。保存时参,但是呢,在建到函数里边它是不可以的,演示一下let Fn。
07:02
好在里边使用log打印一下arguments。下边调一下FN,然后里边传一个123保存看一下啊,Arguments is not DeFined说这个变量没有定义。啊,要注意啊,我们在箭头函数里边不能使用arguments,好主调,这是第三个,还有呢,第四个关于箭头函数的一个简写。啊,简写就它还可以简写分两种情况。啊,分两种情况啊,哪两种情况呢,第一个是省略。小括号。省略小括号,也就是说咱们在声明时,这个小括号是可以省略的,什么时候可以省略小括号呢?就是当行参,当行参有且只有一个的时候可以省略。举个例子啊,比如说let啊,咱们来想做一个加法啊,自加的这样一个函数,好,然后咱们写一个N。
08:06
啊,Return一个。啊,N加上N。自加啊,然后呢,咱们说这个时候来说出一个结果来,这个时候ad括弧啊,把这个九是吧,放进来九加九是吧,切过来18没有问题啊,那么你看咱们这个箭头函数啊,就只有一个形态。那这个时候咱就可以把这个小号省略,可以看一下没有问题。啊,没有问题,这是省略小括号的一个情况,那么还有另外一种情况呢,就是省略花括号。就是大括号啊,什么时候可以省略花括号呢?哎,当代码体只有一条语句的时候。啊,可以省略画括号还是一样,咱们举一个例子啊,比如说我们想求一下这个。平方啊,Let,这个pow等于一个哎,咱们等于一个哎,括弧A还是一样N。
09:01
啊,里边呢,Return一个N乘以N。啊,N乘以N好了,算一下啊。在这哎,这个时候can log打印一下po啊,还是一样把九传进去啊,九九八十一切过来没有问题,这个时候你可以看一下咱们语句啊,这代码体里边只有一套语句,咱们可以把这个花框的省略。而且省完花括号以后,Return语句也必须要省略。好,Return语句也必须要省略啊啊。此时啊,Return啊,必须省略。啊,而且这个语句,而且语句的执行结果就是函数的返回值。看一下我把这个去掉。然后把这个卡掉。保存你看一下依然是81,我可以换一个数字啊,验证一下,保存64。没有问题啊,所以咱们这儿呢,可以把花括号也省掉。
10:04
那花果审完之后,你看咱们前边是不是就一个是吧,就一个行参,所以咱们在这儿可以把它也省略掉,保存结果是一样的,都是64,你会发现咱们箭头函数这块定义实在是太方便了啊,太方便了,好了,那么这个小节关于箭头函数的一个演示,我们就先到这。
我来说两句