00:00
好,下面我们来说另外一个东西啊,这个东西看起来很牛逼,呃,它是一个叫什么呢?I好,写错了啊,是fe啊。来给大家改一改。我们来看一下什么叫LV,它这个明显这像这种单词一看你就知道是很多单词的缩写是吧,那直接翻译过来叫什么呢?立即执行或者立即调用函数表达式。这个概念以前说过吗?没有,没关系啊,就是有这样一种语法,我写大家知道我定义出来一个函数是吧,我就这么定义着,我里面啊随便写个东西啊,我看l.logo啊,随便啊点一点,大家想现在它是报错啊,报错是在说什么呢?说你这个函数吧,你要不就存起来。
01:09
要不就用起来。你要么就执行,要么就存起来,什么叫存起来,你取个名字啊,你可以这么取名字,可不可以可以你也可以说,诶我在左边用表达式的方式去取名字,它是不是也报错啊。是吧,那刚才为什么报错呢?你刚才我不写的时候,他为啥就报错了,是不是你说你名字也不写对吧,你也不你也不去执行,那你留着干嘛呢。就不意义懂吗?能不能理解啊,刚才我们说的是存起来,下面除了存起来还有别的使用方式吗?啊,可以立即执行,现在不就已经是个函数了吗?我要执行怎么办?加一个括号,但这种语法它是不允许的。
02:06
他这个语法吧,他他在他看来,首先你要把它看成一个整体以后才能执行。那我怎么样把它看成一个整体呢?给它括起来。那么看到,而现在我们写的这一个。你看了吗?这不是一个,其实平常我们会把它看成一个什么呢?逆名函数直角动。看这个能不能理解是调用什么意思,首先它是不是匿名函数,是它是不是在自己调用自己。能理解吧,啊OK,平常我们交流的时候可能说这个名字说的比较多,但是有的时候啊,这个概念大家懂,实际上是它们俩是等同的,也就是说I fe和匿名函数是调用,其实是同一个概念。
03:08
能理解吧,啊好,那现在你说我的这个点点点能不能输出可以。是吧,好,那可能就要说,老师你这么搞搞干嘛呢?你不就直接拿出来执行,不拉倒了吗?你你是不是有病吗?你这样不行吗?这也可以,那为什么要搞一个这么复杂的结构,让人受不了的结构放在这,放在这里面呢?大家知道这一个是局部空间,这个大框里面是个局部空间,对不对?现在我们写的代码真是没有意义。能理解吧,也就是说我写在外面的事情里面是真的是一点一一点区别都没有。但是有的时候啊,我做这样一件事情,大家看啊。我握一个A啊,等于三,我输出一个A啊,加上一个三啊,假设啊。
04:05
各位,诶,哎,我写在外面和钱里面有没有区别,区别在哪里?这一个如果我把它们写在外面和写在里面是不是都执行了,但是如果我写在外面是不是产生了一个全局变量A,但是我如果写在里面呢,产生垂积变量吗?没有,那这个地方就要说一个事情。对吧,做一个事情什么事情呢?这样做的好处是什么。这个地方首先选了一个是叫隐藏实现。什么叫隐藏实线呢?就是我的实线不是完全暴露在外面的,能不能理解我们,你看我的我的我的A面看得见嘛,你老师我一我一上来我就看见了,不是说你看不看得见,是说外面的程序看不看得见,那当然你你是肯定看得见的啦,你写到哪你看不见。
05:11
这个一定要知道啊,是站在外面能不能看见对不对,是程序他看在外面能不能看见的问题,不是说你你写东西那你都看得见啊OK。还有一个,还有一个事情啊,这一个如果一旦我们写到外面去,那我就不会污染全局的什么了。命名空间有个概念啊,不会影响,嗯,污染嘛,污染外部命名空间,其实一般就是一般就是那个全局命名空间。一般就是选举了。运用空间,这样是不是减能减少空过,也就是说我这里定义了一个A,我外面还能不能定义A,可不可以,是不是可以的啊?譬如说我再定一个事,有影响吗?是没有的呀,相互之间不影响,因为在不同的作用域里面吗?其实非常简单是吧,一个是全局作用,一个是函数的局部作用域,相互之间是不隔离的。
06:22
能理解吧,来没问题是吧,好。利用他的这一点呢,一般会写这些代码,来,我给大家写一写啊,看看我再写一个。嗯,这里面角还是应该把它来这里写一下,看到我我做这样一件事情,大家看到。呃,我做一个做一个什么事呢?我来去写一个window点多了弧,等于一个function可以写吧。可不可以写,可以写,接着呢,我return一个对象。
07:02
明对吧,可不可以可以好接着呢,我在这个里面讲下啊,我写一个function,写一个test啊,写个test啊,我在里面呢,来再写一个word一个变量A了等于一吧。啊,我接着呢,我CTRl.log a加加加加A吧,好,接着我在这里面做一件事情啊,做件事情。快点。看着有点小复杂了,是不是啊,你别你先不要看外面,就是相当于把这个执行面是不是外面,它是个整体结构吧,啊我定义了一个变量,定义了一个函数是不是超过这个变量。是吧,啊接着呢,我window点多少弧等于一个方形啊,而方形内部是不是返回的这个对象。好,现在我要去取A的直径。
08:00
打印输出我该怎么做?我想取到A,我能直接看见吗?能不能直接看见?肯定不能直接看见,因为它是个绝变量。那我就想取出,我就想把这句话执行一下。我的直接调用pass了,能不能明显不能,那现在你告诉我。怎么办?多福小括号。接着呢,点行不行,可不可以啊,可以是吧,可以了吧,可以,那我现在应该输出多少呢。数几数十二是吧?啊,我们来看一下。
09:00
诶。这个看一下我们第几行啊,这里面是一个问题,然后面我马上就跟大家说这个问题啊,大家没大让每一个人这样,每一个人说出说我现在编码的一个一个跟你们以前的不一一个不同的习惯,我自始至终写的这种代码写的都写了快一天了,都没看见我加个分号,你们没一个人去问老师,你咋不加分号啊,你们是不是觉得很正常是不是?啊,现在呢,就我后面要跟大家马上我等会就跟大家说啊呃,主要是因为我们后面的项目写编码的时候呢,都基本上不用封号。啊,都不用封号,为什么不用封号,就是为了一个字,懒。比如说程序员怎么能懒呢?我告诉你啊,OK,程序员的进步就看懒出来了,如果你没有这种追求,简洁追求,你就说我写三行代码,我搞定了一个事,是吧,我能不能追求我写五行代码搞定,你要没有这个追求。
10:12
那你很难提升到一定的高度。能不能懂啊,这一个不写分号,实际上也是一种精简的思想,就是说所来说是可写可不写对吧,那不写是不是能轻松一点。你说老师我看着不习惯,我告诉你,你写了几天你就习惯了。OK,比如说老师我有女朋友,我都不习惯,那那你赶紧啊,你得处理掉是吧,OK。啊,但是呢,不写分号在有的时候就会有问题,譬如现在这里有问题。为什么会有问题,这里面它会把它连在一起啊,最后把前面的看成一个函数进行调用了,这不是一个大括号吗?看到了吗?一个一个小括号,一个括号,它会把前面看的函数,但434函数嘛,不是,所以解决办法是什么?比如说老师在后面加个括号行不行,行,但我就不想在后面加分号在前面加。
11:18
因为加分号的方式大家都能理解了,现在我要教大家是不加分号我们该怎么做,对吧?就有些问题需要注意,等会就跟大家说啊,我先把这个问题解决掉。可不可以,可以是不是爱啊,就是啊,没什么问题是吧,嗯,好大家看啊,这里面大家看到我这种方式是在做什么事情呢?是实际上是不是向外暴露一个函数啊。是吧,能不能懂,现在我这个我这行代码是不是向外暴露一个全局函数。
12:01
能不能理解,嗯,但是是我是我这个暴露一个函数,最终实际上是暴,把它暴露出去了是吧。我执行以后是不是得到一个对象啊。能理解吧,能理解好,那得到对象最终是不是执行这个,这个函数相当于暴露出去了,但是所有函数我都需要暴露吗?假设我这里面在哪个函数是吧,我叫他就。我不能,我能不能暴露啊,可不可以,也就是说我不暴露的话,它是不是就是完全隐藏的,这一个就是我们用匿名函数自调用,最终我们会去写一种东西啊,叫模块啊,不过后面才跟大家说,大家先呢,把我现在讲的给它搞清楚,向外这个要懂,它这个要懂,还有一个这个是什么类型呢。这是个什么类型的数据?
13:00
是不是函数啊,你不要被有的同学看这个,这是个啥呀,你别被名字所迷惑了,你要看它的类型,你看他不破就用吗。是不是,那我后面为什么能调用test?这个要知道啊,通过这一个调用,你应该明白两个事情,第一个事情是什么,多了福是一个什么东西,是一个函数。我我多了福,是不是就是函数零了,能不懂?还有一个事情,大家需要知道哪个事情多了福执行后返回的是一个什么对象,而这个对象是不是有个态方法。啊,别忘了我今天说的话啊,后面有用,我不是随便瞎举的例子,这个东西有用的。
14:01
好,这里面呢,我们就跟大家去简单说了一下,I fe其实非常简单,就是一个匿名函数自标,用它有什么作用啊,OK,隐藏实现,这个不会去污染外部的什么呢?命名空间,最终我们可以用它来去。来什么编写JS模块?至于接触模块是什么,后面会跟大家讲啊,大家不用着急。好,这里面呢,我们就跟大家讲了两个重要的关于函数的概念,一个叫回调函数,一叫I fe,啊,这个大家要多读几遍啊。啊,平常我们也可能叫命名函数直流好吧,那这个呢,我们就先说到这里。
我来说两句