00:00
这来说我们这个作用域,上午呢,我们说了一个这个全局作用域,哎,全局作用域就是什么呀,就是我们整个这个什么呀,哎,SK冰箱里边全都算是这个全局作用域,那比如说拿我们这个什么呀,拿我们学校来说,可能我们整个这个上规五这个范围,它就是一个什么呀,就是一个全局作用域啊,就是一个全作用域,那全局作用域完了以后,我们再说一什么呢,叫做一个函数作用域啊零九我们叫做一个函作域,如果还是拿刚才那个比,呃比喻做做比较的话,我说了上硅谷相当于是一个什么呀,全聚动域,那么什么呀,我们每一个班级就相当于是一个。函数作用域也就是说它是一个整体与这个部分,整体与这个局部的一个关系啊,整体局部的关系,那我们来说一下函数作用域,函数作用域哎,那我们说了函数作用域是我们什么呀?哎,我们整体全局作用域是一个大的作用域,而函数作用域呢,是我们全局里边一个什么呀,一个一个小的部分,就像我们上规谷里边一个大的学校里边会有一个一个这个班级一样啊,函数作用欲是一个小的作用欲,那我们来说一下,我这来一个function,来一个FN,函数作用域肯定离不开始呀,函数啊函数,那我们来说函数作用域什么时候开始呢?诶,我们说了全局作用域什么时候开始的呀,打开页面的时候全局作用域创建,关闭页面的时候,全局作用域干嘛呀,销毁,那我们说还是作用域呢,哎,我们说调用函数时,哎,创建我们这个函数作用域,哎函数什么呢?函数执行。
01:36
嗯,完毕以后,我们这个函数作用域干嘛呀?销毁啊,调用函数值,创建函数作用域,函数执行完毕以后,函数作用域销毁,那现在我们来说,我现在有没有函数作用域啊,有没有啊,没有,为什么没有,哎,我就没调用函数啊,我就没调用函数,那来我这来一个什么呢?来一个f fun,我这是不是调用一个函数,那此时我们就开启了一个什么呀?函数作用域,那什么时候销毁啊,函数调用完了,这个作用域就没了,就没了啊就没了,调用完了这个作用就没了,而且我们来说什么呢?每调用一次函数,嗯,每调用一次函数就会创建一个什么呀,新的函数作用域,哎,它们之间是什么呀?是互相独立的啊,实际上互相独立的,所以我这块来两个FN,我是不是调了三个函数,调了三个函数实际上产生了什么呀,三个作用域,但是都是什么呀,它们都是独立。
02:36
这个它是一个作用域,它是一个,它是一个是三个作用域啊,它们之间是互相独立的啊,互相独立的,这也是我们说的这个函数作用域,一定要注意,函数作用域是我们的这个整体里边的一个什么呀,一个局部啊,一个局部,那我们来看一个什么等西呢?我在这儿定一个变量,创建一个这个变量直接Y一个A等于个十,那我们来说我这个A是个什么变量,是个全局变量吧,全局变量,换句话说,我这个A现在是在这个全局作用义里,对吧?好,那现在我们在函数作用域,函数作用域是个局部作用域,我来干嘛呢?我在这儿来一个cancel.log一个,诶我是不是在这输出这个呀?诶,那我们来说这个能不能访问到,诶来他们看看直接cancel对,咱们直接调一个谁呀,调一个FU是不是行了呀,那FU如果能输出A是不是证明访问到了,如果输出不了,是不是就反应不到了。
03:36
哎,来,咱们还是完整的输出A。等于,哎呦呵,A等于我这加上一个A啊,咱们来看我这一保存走A等于十是不是可以访问啊,哎,可以访问,所以这里边我们来说什么呢?函数作用域是一个什么呀?局部的,你说什么呢?在我们这个函数作用域中可以什么呢?可以访问到哪啊,访问到我们这个全局的什么呀?变量啊,可以访问到全局作用域的一个变量,A是不是就是全局作用域变量啊,或者简单来说就是一个什么呀,全局变量,在我们这个函数里可以看到全局变量,所以才叫全局吗?如果你不是在哪都能访问到,就不叫全局了,一定注意全局是在什么呀,任何位置都可以访问的,这就像什么呀,像我们这个上硅谷门口那个什么呀,黑板一样,我们每个人来了,每个班级的同学是不是都能看到?
04:40
这黑板啊,那个黑板就是一个全局的,所以注意在函数中可以访问到全局的这个变量,但是反过来Y一个B等于一个20,这个B我是在哪声明的,是不是在函数里声明的呀,在函数里声明的来我调完函数,我在这来一个cancel点,一个log,一个这个B等于B这块,注意我这是在函数里访问,而这是在什么呀,全局作用域里访问吧,哎,也就是我要看什么呀,我要看的是在全局作用域里能不能访问到我们这个函数作用域里边这个变量B来我这一保存走,你如。
05:23
B is not DeFine,这是不是直接报错了呀?哎,直接报错了,所以这里边我们来说叫什么呢?在我们这个函数,在我们这个全局作用域中干嘛呢?无法访问到我们什么呀?哎,函数作用域的这个变量啊,无法访问到我们函数作用的变量,这就像什么呀?诶还是拿我们这黑白举例子,我们这黑板是不是每个班的同学都能看见,但注意咱们班这有这么一句话是吧,这个标语别的班同学看见吗?看不见,只有咱们自己能看见吧,所以叫什么?我们说了在全局,哎在在局部可以访问到全局,在全局无法访问到什么呀,局部的,哎,我们说了全局是一个大的,我们这个局部,我们函数是一个什么呀?小的是不是在它里边啊,它里边,所以这块注意我们是什么呀,哎,我们从外从里边干嘛呢,可以看到外边,但是从外边不能看到什么呀,里边我们这个区域对于外部来说,它是一个什么呀。
06:24
它是一个封闭的,诶别的班的同学看不到咱们在教室里到底是干什么,咱们是干嘛呀,封闭的,但是咱们是不是可以看到外边啊,诶可以看到外边啊,从外边不能往里看,但是从里可以往外看啊,是这么一个,哎,函数可以访问全局,但是全局不能访问什么呀,函数啊,不能访问函数好,那现在我们来看一个啊,那这里边是这么写的,Y一个B等于20,我这来一个Y一个这个AY一个A等于什么呢?等于一个哎,我是这个函数中的这个变量A,那现在来看了,诶这个就有点乱乎了,我们来看我有几个A,两个A,一个是全局变量A,还有一个是函数A和一个变量函数作用语圆变量A,那现在我们来看,我在函数里去访问A,那我现在问你两个A,一个是全局的A,一个是。
07:17
函数里边的A,那它会访问谁呢?访问谁呢?诶咱们把这个B我先给它注掉啊,然后我这一保存走,你说什么,我是函数中的变量A啊,我是函数中变量A,那来看啊,我在外部输出一下,在外部输出一下,我这里保存走,你是不是第二个是A等于十啊,诶第一个是我们什么呀?我是函数中的这个变量AA,那问题来了,这也有A,这也有A,它为什么输出的是这个A呢?哎,咱们想也能想到是不是谁离得近找谁啊,哎,谁近找谁啊,所以注意当我们什么呢?当在我们这个函数作用域中干嘛呢?哎,作用域中操作一个这个变量时啊,变量时它会什么呢?它会先在什么呀,自身这个作用域中寻找啊,会在自身作用域中寻找有什么呀?
08:18
先找自己这个作用欲一看有没有啊,有有怎么办?有就直接使用,如果有就什么呢?就直接使用啊,如果有值使用,如果什么呢?如果没有则什么呢?则像我们这个上一节作用于中寻找啊,向上级作用语中寻找,所以对于我们这来说,他找到了有没有了,有有是不是就用了呀,好,我给住了,住了以后还有没有了,没有了,没有就干嘛去他上一级去找,上一级找到了干嘛了,我是不是就拿过来用了,哎,他是一级一级的去往上涨的,但是注意了,我说这个上一级是不是说一定是全局,诶假设咱们在这啊,来一个f fun function来个FUNCTION2现在干嘛,我在函数里边是不是又套了一个函数啊,哎,我。
09:18
来什么呢?来一个cancel点一个log一个什么呢?Log一个这个A等于我加上一个A,我在这里边是不是也输出这个A呀,也输入这个A,那我们现在来看它里边有A吗?没有A来我把这打开,我是F因函数的变量A,那我们来看什么效果,那现在这函数咱们没有效果,因为这F平面我是没有调啊,所以在这儿呢,我来调一下这个f fun好啊,我来调一下它,我来看看效果这块我一保存走你诶出来一什么我是F11函数的什么呀,变了A那什么特点F112在打印A的时候,先在自己的作用里找有吗没有在取得的什么呀,上一级,上一级是谁呀?F fun吧,FN有没有,有吧,有是不是直接就用了,假设f fun也没有呢?
10:09
哎,我一保存是不是就值了呀,是不是再上上一级啊,哎,说白了就是什么呀,我这个作用欲它跟就跟我们上午说的什么套娃似的呀,我还是作用域里还能套一个,还是作用浴还能是不是再套啊,哎,可以一直一直套,你可以无限套,那找的时候干嘛呀,现在自己这找自己没有干嘛呀,往外找,还没有还找,还没有再找,还没有再找,一直找谁这是我们这个全局作用域吧,诶一直会找到我们这个全局作用域好了,如果全局作用域里边也没有一保存完了,是不是报错了,哎,报错了啊,所以注意它会一直相找,哎,如果没有,如果没有则向上一局作用一中寻找,直到什么呢?直到。找到我们这个全局作用域啊,全作用欲如果什么呢?如果全局作用域中依然没有找到,则什么呢?则会怎么样?
11:09
报错啊,只会报错,我们就叫什么呀,Reference error啊,你这个引用异常啊,引用错误会报这个报这个错误啊,把这个错误告诉你什么呀,这东西啊,我都找了什么呀,找了一圈了,都找到我们这个最外边,最外边的再找就可能要离开地球了,是吧,找不着了,咔,给你抱着一错,诶告诉你干嘛了,我找不着了啊找不着了啊好,这一块应该能懂吧,跟我们实际生活里边其实也是一样,就是就近原则,谁近我就找谁啊,谁进我找谁,好那还是看这么一个东西来打开,打开Y号一个AA等于十,然后函数里边有一个A等于这个FN,哎,这个哎,这个一串一个字符串,那现在呢,我这一找应该找的是谁呀,是不是这个呀?哎,我这一保存是不是输出的事,是他呀,好,那现在我不想找他,我想找谁呢?我想找的是我这个全局里的A。
12:03
那怎么办呀,我不想找这个,我想找全局里边的。全局里的A是谁的属性,诶window的属性,所以我可以写什么呢?window.a是不行了呀,诶来我一保存是不是就A等于十了,哎,所以注意在函数里边,我们要想访问全局的直接加一个什么呀,Window你不加window就是就近你加window就是我们这个全局的啊全局的好这里边我们来说在我们这个函数中要什么呢?访问我们这个全局的这个变量可以什么呢?可以使用我们这个window对象啊,可以使用我们这个window对象,好那这块这个函数我们就看完了啊这个作用域,然后再看一些东西啊,再看一些东西,再看一些什么呢?再看一些其实就跟我们那个差不多了啊,我再写一个,写一什么呢?写一个方来一什么呢?FUNUN3函数三,然后呢,我这来一个Y一个A等于一个呃,35,然后呢,我这来一个cancel.log一个,诶我一保存,然后呢,我调一下FU3这东西没啥可说的了,肯定就出来什么了,诶是不是35啊。
13:08
好,现在看着走走。我在声明这个变量声明之前我就输出了,诶那这块是会什么效果。哎,那们看着啊,我一保存走,你什么玩意儿安迪范,安迪范我要没有呢?没有是不是找外边那个了,哎,没有找外边,所以你看叫什么呀,叫安find,为什么是不是声明提前了,哎声明提前了啊,所以注意在我们这个函数作用域中,在函数作用域中也有什么呢?也有这个声明提前的一个特性啊,声命前特性什么呢?使用我们这个外关键字声明的这个什么呀?诶声明的这个变量会什么呢?会在我们这个函数中所有的这个代码执行之前干啥呢?被声明,所以你这来一个ya等于35,相于什么呢?相当于这样前边来了一个Y,然后这是A等于35,它是在最前面就干嘛了呀,声明的,但是没有负值,所以你知道看到值是什么呀,是安范。
14:22
啊是安迪范的啊,一定注意是不是说我这里边没有A啊,有A只不过是没有负值啊,没有负值这一块一定要注意啊,一定要注意好,那这块呢,还有一个谁呀,我们的函数函数会不会升起啊,我们来看看,直接来一个这个什么呀,Function我们叫做一个f fun4,我就不写东西啊,我直接看能不能调,如果调不标错是不是就没问题了呀,FUN4然后这一调咱们来看一保存没问题吧,哎,还是写一个吧,反没感觉是吧,我是哎I f fun4来现在咱们来看已保存是不是执行了呀,诶你看是不是在我这个声明之前就调用了呀,诶就调用了啊,所以这块使用什么呀?哎,我们这个函数声明,函数声明诶也会什么呢?也会在我们这个函数中所有的这个代码执行之前干嘛呢?诶执行。
15:22
其实呢,你会发现什么呢?我这个函数作用域其实就是一个什么呀,小的全局吧,哎,小的全局它的特点呢,和全局里边呢,基本上都是什么呀一样,不同的就是它这个范围,还有它这个生命周期比较短,它的什么呀,它命比较短,你叫命比较短,调用完了是不是就完了呀,而我们全局呢,只有关闭这个页面以后才会消失啊,才会消失,好那这一块呢,是我们说的这块啊,它的一个特点跟我们的全局呢,基本上是一致的啊,基本是一致的,好,那这块看完了,我们来再看一点小东西吧,来我写这么一个东西,看看你能不能看懂,直接我这来一个Y,一个C等于一个这个33 C等于33,随便写一个,然后function function来一个这个FUN5,创建这么一个函数,创建这么一个函数呢,我来一个来什么呢?Canl.log一个这个C,等于我加上一个C,我是不是输出C啊,然后我调一个这个FUN5,那我现在问你这C是谁?
16:22
函数里没有是不是上上一句找啊上一集一看谁呀,33吧,所以一保存是不是输出的是33呀,哎,输出33来我这来一个来什么呢?来一个Y一个C等于十等于十,问你这回是多少。说啥我一保存是安你范的吧,为什么安你范的,同样我这cancel love输出C,他是不是先找C啊,一找有没有C啊,有C因为它会被提前声明有C,但是指什么呀,C没有赋值,没赋值跟没有它不是一概念,对吧,所以他有,只不过值是安点范的啊,所以输出这么一个安底范的好,那再看我把这Y呢给它去了,直接就C等于十。
17:08
C等于这个是输出多少?诶,首先你没有腕,会不会提前声明,不会提前声明,不会提前声明,那这用的时候找到C吗?找不着,上上一级找吧,上一级有没有C,有33,所以这输出应该是33,看懂了吧?哎,这输出应该是33,好再看啊注意我在全局里边,我cancel.log一个这个C等于我加上一个C,在这输出全局啊,在全局输出C。哎,全局输入C这块应该是谁?哎,那我先问你这个C是个局部的还是全局的,是局部还是全局的,来来我们来看啊,我给你保存是不是十啊,一定注意我这有没有血腕啊,没有血腕啊,没有血腕没有血位,你这是不是要给C进行赋值啊,好,他要先找C,找C,他这有C吗?没有C吧,没有C他叫干嘛呀,去上一句找,所以这个C就是我们全局的那个什么呀,C,但是如果你写了一个Y,它才是什么呀?才是局部的,所以这里边我们还要说一个问题,叫什么呢?在我们这个函数中不使用Y声明的这个变量,哎,都会什么呢?都会成为我们这个全局变量,所以这块你注意你来了一个C等于十有没有用二啊没有用腕,所以它是一个。
18:50
全局的你直接一写,它实际上就会改变谁呀,我们外边这个C啊,外边的C再看一个啊再看一个,我不搞C等于十了,我直接来什么呢?来一个这个D等于一个100,我是不是整了一个变量D啊哎,还是这变量D我是不是在这个函数里边操作的呀,好,我直接来一个输出一个D等于D注意是在哪输出的,在全局里输出的了,哎,我这一保存走你D是多少100,也就是说好像是我在全局里是不是能访问到我们这个函数里边的呀,诶但是是吗?不是因为什么呀,我们这个D没有使用我们这个什么呀,哎哇关键字哎没有使用Y关键字则什么呢?则会设置为我们这个什么呀,全局变量,所以你这写一个D相当于什么呢?相当于window.d啊,它是一个全局变量啊,所以注意这里边一般情况下我们都会什么呀,写Y,你要不写Y就变成什么,变成全局的啊,变成全局的这块。
19:50
要注意还注意好,那这块看完了再看一个啊再看一个,还是来一个function,我来一什么呢?Y一个这个E等于个这个诶等于一个23,这写一个,然后呢,往下我们来写,写一个方个来一个FUN6FUN6我这来一个什么呢?来一个alert一个这个e alert一个E,然后我调一下这个fun。
20:16
六这个E都没得说了,肯定是谁呀,23吧,哎,F型0623啊,咱们来看一保存走,你是不是23啊,来再看我这来个没有行参吧,来个行参,来个行参干嘛呢?一啊,来个行参一。那这个还是多少,但是我没传,我传了,我传一个20,说就20啊,哎,那现在我没传。临传什么呢?易保存什么玩意儿,安点泛啊,我们说过这句话,其实我们之前说过什么呢?定义行参就相当于在我们这个函数作用域中干嘛呢?哎,声明了变量,所以你这定一个行参亿,就相当于你这来一什么呀,RA的一个亿啊,就相当于生明一个变量,那也就是说我函数等于有没有这个亿啊,有没有啊有啊有他一找有没有啊有,但是你这没有传13吧,只不过没有负值,有它的值是什么呀?安点find啊,安范一定要注意,行参就相当于在函数作用中声明了什么呀,变量啊,就相当于在函数作用中声明了一个变量啊好,那这也是我们函数作用里边一些特点啊,它稍微的会有一点散,然后我们再去总结一下啊,这块呢,把这东西稍微的去过一下啊,稍微过一下。
我来说两句