00:00
那我们还是来说一个,这个也是一个概念性的东西啊,但是这个东西还是比较重要的,也比较简单,但是它的东西稍微的有一点多,你需要去记一下啊,叫做什么呢?作用作用欲,呃,作用于我们英文叫做s cupco啊Co这个作用欲,诶作用欲,那这个先还是研究一下它什么意思呀,作用欲什么叫欲呀。哎,区域对吧,呃作用作用域呢,就是什么呀,作用区域或者叫什么呢?叫作用,呃作用范围啊作用范围,那那我们说作用欲指的什么呢?呃作用欲呃指我们什么呀?呃,一个这个哎变量的什么呀,的一个这个哎作用的这个范围,咱们举个例子啊,举个例子,我这来一个方程定义函数,来一个f f fun里边我来一个Y,一个这个A等于一个这个123,然后呢,我这调用一下f fun,我是不是调用这函数,在函数内部我是不是生成一个变量A,它的值是123呀,我保存没报错吧,然后在外边我来什么呢?Cancel log,一个A,我是不是想输出这个A啊,那我问你了,在这我能输出这个A吗?
01:14
来,我一保存走你干嘛了?报错了,他给你告诉你什么a is not DeFine,也就是说我在函数外部能不能看见函数里边的A,看不到,那就证明什么呀,我们这个A的作用域就在什么呀,就在函数里,在外边是干嘛呀,是看不见的,那这个就是什么呀?作用域啊,这个A在外部是无法看到的啊,就我们这个作用域,那这里边我们来说一下这个作用域啊,在我们这个GS中,作用域一共分成两种,就两种啊在我们GS中,嗯,一共我们说有什么呀?有两种作用域,那两种作用域,第一种我们叫做什么呢?叫做一个全局作用域,还有一种我们叫做什么呢?叫做函数作用域,或者你叫局部作用域也行,哎,行,第一种叫做全局作用域,第二种叫做函数作用域,那我们先说第一个叫什么呢?全局作用域,诶全局什么叫全局啊,是不是整个面叫全局啊,哎,全局作。
02:14
等于,所以这边我们说叫什么呢?直接编写在我们这个script的标签中的这个什么呀,诶中的这个接代码,哎,都在什么呢?都在我们这个全局作用语中啊,都在我们这个全局作用语中滋乌卧作用用于啊都在全作用语中,换句话说,我这来一个Y一个A等于123,然后Y一个B等于个456,然后呢,我来一个方个来一个f fun,那这三个我是不是整了两个变量一个函数啊,这三个我是不是都是直接写到sscript的里边的呀?那这三个全都在什么呀?我的全局作用域里啊,全都叫全局作用域,那我们还接下来说全局作用域是怎么回事呢?我们说我们先说第一个问题叫什么呀?它是什么时候创建的呀?全局作用域在什么呢?在我们这个页面打开时。
03:15
创建在什么呢?在我们页面关闭时销毁什么意思?你这咔一打开,我是不是浏览器打开这个页面了,此时我这个我这个什么呀,全局作用域就已经干嘛了,创建了啊,自己创建了,你这咔一点叉子干嘛了,关上了吧,全局作用域干嘛了,就销毁了,诶在页面打开时创建,在页面关闭时销毁啊关闭时销毁好给它改回来,现在是不是又创建了一个呀?诶所以注意啊,打开时创建,关闭时销毁,然后还有什么呢?我们来说一下。在我们这个什么呀,全局作用域中,兹卧作作用狱中干嘛呢?诶有一个这个全局对象谁呢?Window我们可以什么呢?我们可以直接使用啊,直接使用全局对象window,我们先不管它是谁,我们知道它是一个什么呀,是一个对象,对象一定注意我们以后我们说对象对象都是对我们这个什么呀,对我们这个。
04:21
现实世界的一个什么呀,抽象,那我们说这个window什么意思呀,窗口窗口哪有窗口,诶是不是就是我这浏览器的这个窗口啊,所以注意在全局作用域中有一个全局对象window啊,它什么呢?它代表的是我们这个浏览器的一个窗口,代表的是我们这一个浏览器的一个窗口,它有什么呢?它有留我有谁呀,有我们这个浏览器干嘛呀,创建。诶,它有我们这个浏览器创建,我们可以干嘛呢?我们可以直接在页面中使用,比如说我这直接来一个来什么呢?我们现在是不是看看它有没有啊,直接cancel.log一个window,如果不是anti find是不是证明确实有啊,来我这一保存走object window。
05:17
看到了吗?哎,确实有一个window对象,那这个window对象呢,我们还叫什么呀,叫全局对象,那全局对象它它有啥用呢?有啥用呢?我们来说啊,在我们这个全局作用域中,哎,我们说我们创建的什么呀,在全局作用域中,我们这个创建的这个变量都会作为我们这个window对象的属性保存啊,我们创建的变量都会作为window对象的属性保存,比如说我这来一个Y,一个这个A等于一个十,我是不是创建一个变量AA的值是十啊,我来一个输出一个AA就应该多少,是不是十啊?哎,但是我注意了,这个变量存哪去了,这个变量会作为我们这个window对象的。
06:17
属性保存,所以注意,虽然你是一个变量,但这个变量实际上保存的时候是保存到我们这个window对象里了,所以呢,那既然是window对象的属性,那我一想既然是window对象的属性,我直接来一个window.a行不行啊,如果是是不是就一定行啊,诶我这一保存走。是不是就出来了,哎来一个我Y一个这个什么呢?Y一个B等于一个20,诶那B也是谁呀,也是window对象的属性,一保存是window.b是不是也是20啊,所以你这写B跟写window.b实际上是什么呀,一样的,诶那你说我这写window.c行不行,有没有C呀,没有C我一运行是不是报错了呀?来我添加一个哇,一个C等于个这个hello,然后呢,我这清空一下一保存走是不呀。
07:12
哈,所以注意在全局作用域中,我们创建的变量都会作为window对象的属性保存,所以注意存哪了,它存到这个window对象里了,但是一般也不用这么做,这么做就比较什么呀,比较麻烦,但是什么时候会做呢?比如说刚才那种情况,我window.c干嘛呢?是安地饭的吧,但是我如果直接输出一个C呢。报错了呀,哎,报错了,为什么呀,因为我们说了,你找一个对象的属性没有的话,它就干嘛了,是不是安范的呀,但是如果找变量没有就给你报错了啊,所以注意有的时候会用到,但是呢,不多啊不多,所以注意所有的变量,我们这个全局作用域里边的所有变量都会作为window对象的属性保存,然后来说我们这个什么呢?创建的函数都会作为window对象的方法保存,什么意思来看一个function f fun,这是不是一函数啊,来一个直接来一个can.log log什么呢?Log一个,诶我是我们这个fun函数一保存,注意我这声明的一个函数,函数是不是在我这个全均域里生明的呀?哎,我这如果来什么呢?FN括号,我是来调用这个函数啊,诶来,我给你保存是不是执行了呀?诶,那我们说了这个函数会作为window对象的。
08:36
方法保存,所以呢,我如果来一个window.f fun实际上是什么呀,是一样的,来我们来看走你是不是也执行了呀,哎,为什么?因为它也在window对象的什么呀里边保存的,所以呢,你可以window.f fun或者直接来什么呀,来F效果都是什么样?一样的啊,效果都是一样的,诶所以我们来说,既然一样的,我们之前有过一个谁呀,是不是有一个alert呀,Alert来一个hello,我一保存是不是出来hello了呀,那我一想我来什么呢?诶来一个window.alert行不行呢?保存是不是一样的呀?哎,一样的啊,所以注意全局里边的这个函数,哎,都会作为window对象的这个方法保存,所以我刚才为什么要跟你说,方法和函数实际上没有本质区别,我们所谓的函数,其实它就是window对象的方法,对吧?
09:36
哎,我们所谓的函数其实就是window度对象的方法啊,一定注意,在我们全局作用里创建的变量都会作为window对象的属性保存,创建的函数呢,都会作为window度对象的方法保存啊,这也是我们这个全局作用域的一些特点啊,一些特点,然后呢,我们接下来呢,再说一个啊,再说一个来这里边我们来说一个什么呢?说一个概念叫做一个这个变量的一个这个声明提前啊,声明提前我们来看什么笑什么东西啊,我们来一个script的标签,我这来一什么呢?Y一个A等于一个123,我是不是创建一个变量A等于123呀,直接来一个cancel.log一个A等于我加上一个AA的值,现在就是123,诶我们说了声明一个变量,你是不是要使用这个。
10:24
哇,关键字啊,哎哇关键字那有同学肯定试过了,我就不愿意用哇,我不写war行不行呢?不加行不行呢?我给你保存,诶是不是也行啊,那注意了,你这不写Y就相当于什么呢?相当于是window点,诶那是不是相当于像对象里直接添加属性了,诶你写不写呢?其实在这呢是是一样的啊,在这是一样,但是我们要看区别啊,看区别还是我这来一个先来一个挖一个A是不是等于123呀,哎,我这一保存是不是A的值是123呀,来再看啊看这看清楚了,我按着CTRL,然后按着方向键上下可以挪动我们这个代码来,我把这个挪到哪了。
11:06
把这个变量的声明是不是挪到了我们这个cancel.log的下边了,诶那现在问你了,他俩谁先执行,是第八行先执行还是第十行先执行,是第八行啊,那注意了,你第八行先执行的时候,第十行执没执行呢?没有呢?没有呢?A,有没有啊,没有,那这应该干嘛呀,应该报错啊,哎,来,我一保存走你。没报错是吧?A,等于什么安范?虽然值是安范,但是这却没有报错,来,咱们再看啊,把袜给它去了,不写袜了。早干嘛了?错了吧,诶报错了它这是为啥,虽然咱们可能不这么用啊,但是你要知道它这个特点啊,这么一个特点,我先写上一个这个不,那这块我们说的叫什么呢?叫做一个变量的这个什么呀,声明体现,诶什么叫变量的声明体检,你要注意了,我们叫什么呢?我们使用哇关键字声明的这个变量会在什么呢?会在我们这个所有的代码执行之前干嘛呢?诶被声明好啊被声明啊,会在所有的代码执行之前被声明,所以你注意我这写了一个Y,是不是等于123呀,我就相当于什么呢?相当于是这么写的,在最上边来了一个Y,然后在这来了一什么呀,A等于123,就相当于是这么写的,这个Y会在什么呀,所有代码执行之前。
12:48
执行这能看懂吗?哎,我执行完了YA生明一个变量A,然后我是不是在这输出啊,这有没有问题呀,没有问题吧,诶完全没有问题,那A是什么呀?A是不是就是安底范的呀,因为我赋值是不是在十五行赋值的呀,所以保存A就是什么呀,安点范的啊安底范的但是什么呢?但是如果什么呢?如果声明变量时不使用这个哇关键字则什么呢?哎,则我们这个变量不会被什么呀被声明。
13:23
体前,所以如果你这没你这写wa了以后呢,跟我刚才写的是一样的,这个wa会干嘛呀,会在最上边干嘛了,执行啊,会在这上面执行,也就是说所有代码执行之前,我先把变量干嘛了声明好了,但是什么时候赋值啊,会在16行的时候干嘛呀,赋值,所以注意会在所有代码执行之前声明,但是注意我要注意注意什么,但是不会什么呀,赋值什么时候赋值,等到执行到这一行的时候才赋值,所以你这一输出是一个什么呀?And迪fun,但是如果你不写Y,不写Y还有没有这特性了,就没有了,那所以你在这执行的时候,A有没有呢?没有了,你找A没有,没有怎么办?咔嚓报错吧,诶报错啊,所以注意不用腕会有这么一个问题,但这里边呢,其实我们即使你写Y呢,我们这么用的情况呢,也不多啊,也不多,但是还是邀请这个Y呢,必须得给大家写上,必须得写上,这也是我们说这个变量的一个声明题写。
14:23
然后再看啊,这块都是一些概念性同学啊,你就记住了,然后再看我来一个function,来一个f fun cancel.log这写什么呢?写一个哎,我是一个哎,一个fun函数啊,我是一个f fun函数,然后再写一个啊看着画一个这个FUN2等于一个方式,一个是采用一个函数说明,还有一个采用的一个函数表式啊,直接来一个cancel.log哎,我是f fun2函数,我现在是不是有两个函数啊,我们说了这两种方式呢,我们在开发的时候呢,都会用到,但是我们来看有没有什么区别啊,现在我来调一个f fun1保存走,你是不是执行了呀,我来调一什么呢?调一个f fun2和已保存走,你是不是也执行了呀?诶是一样的,但是我要看的是什么。
15:15
来把FU2先住了啊,我把FU摁着CTRL往上挪,走走走走走第18行,我是不是调用fu这函数,但是注意fu函数是在20行声明的吧,诶,那我们来说一下这东西它会不会保存来直接一保存走你。掉没掉掉了吧,没报错吧,也就是说我是在函数声明之前去调用的函数吧,哎,调用函数来咱们再看F02。把F原先给他住了啊,我已保存走,你andde find is not啊,Function是不是报错了呀?哎,报错了,我说这是为什么呀。
16:07
这是为什么呀?他说安find is not function,那谁是安迪find呀,是不是F音二是安范呀,诶也就是说咱们先说F2这个变量有没有呢?变量有没有呢?诶他是不是用Y声明的呀,所以有这个声明提前,所以保存变量是不是在有有啊,但是你要调一个安find,安find的是函数吗?不是函数,不是函数,你这一调是不是就给你报错了,哎,报错了啊所以注意我们来说一下为什么会产生这个问题,我们来说一下什么呢?叫做一个我们的什么呀?叫做函数的一个什么呀?生命体检啊函数一个生命体检,我们来说叫什么呢?使用我们这个函数声明形式干嘛呢?创建的函数什么意思呀?就是我们这个function Fn t后边跟着一个这个函数名,然后一个括号,一个大块这种形式叫什么呀?函数声明啊,声明形式创建的函数,它会。
17:08
什么呢?它会在我们这个所有的什么呀,哎,代码执行之前,哎就什么呢,就被创建啊就被创建,所以什么意思,你这个函数写在这儿,你虽然写在了什么呀后边,但是代码在执行尺执行之前干嘛呀,它的优先级比较高,我们我们这个浏览器,我们的解析会干嘛呢?会优先去解析它,所以你把它写到这儿和什么呢,写到最上边是什么呀,是一样的啊一样的,而且你注意它不仅是声明提前了,他干嘛了,直接把这函数都给你。创建好了啊,都已经创建好了,创建完了,这个名字有了,然后函数干嘛呢,也给你创建好了啊,所以注意它会在所有代码执行之前就被创建,它含这个word是干嘛呀,是一块儿的,那是一块的,诶那我们来说了,那之前被创建它有什么特点呢?那我们就可以什么呢?所以我们可以在一个什么呀,在函数声明前来干嘛呢?来调用函数,所以你这种形式写的函数,你写在哪都是什么呀,一样的,你写在上边,写在下边,写在中间都是一样的,它都会最先被创建啊,最先被创建,但是注意了,那这个玩意儿呢,他会不会了。
18:33
这个玩意儿我们说了,叫做一个函数的一个表达式,它会干嘛呢?首先变量会不会被提前声明啊,会啊,FU2会被提前声明,但是注意啊,此时仅仅是提前声明,有没有赋值,没有赋值,所以F12是什么呀?是安点范的,什么时候才赋值,执行到29行的时候才会干嘛呀赋值,所以它能不能在声明之前调用?
19:00
不能啊不能,所以这块注意叫什么呢?使用使用我们这个函数表达式创建的函数不会被什么呀,不会被什么呀,声明提前,所以什么呢?所以不能在我们这个什么声明前调用啊,声明前调用,所以这是他们两这么一个区别啊,这么一个区别,使用我们这个表达我们这个声明的形式创建的函数干嘛呀,会被提前创建,使用表达式这种形式创建函数呢,不会被提前创建啊,但是这里边呢,其实区别不大,你就了解一下他们这么一个特点就行了,其实呢,你它先创建后创建呢,其实对于咱们来说区别不大,你只要注意什么呀,这种形式的时候,你不能干嘛呀,先掉你得干嘛呀,在。后边掉吧,诶后边调啊,所以这边我们来说这个玩意儿呢,诶叫做函数声明会被提前创建,下边这个呢,叫什么呢?叫做函数表达式叫什么呢?呃,不会被提前创建啊,不会被提前创建好,那这个呢,是我们说的全局这个作用欲的一些一些知识啊一些知识,然后呢,这块我们再补充一句,补充一句什么呢?哎,我们说全局作用于作用于中的这个,哎变量都是什么呢?都是全局变量,什么叫全局变量呢?什么叫全局变量啊,全局的什么呀,整个哪是不是都可以看见啊,什么呢,在我们的什么呢?在我们这个页面的什么呀,任意的这个部分都可以什么呀,都可以访问的到啊,都可以访问到在页面的任意部分,也就是说你。
20:48
这定一个A等于十,在只要是在这个页面里干嘛呢,都可以看得到,为什么,因为它是什么呀,全局的有点像什么呀,像咱们一楼那个黑板一样,干嘛呢,是不是谁进门是不是都能看见,哎,都能看见,全局都也也是特点,在我们这个城区里的任意位置都可以访问到啊,它的范围呢,它的视力范围比较比较大,比较大,好然后还有一个函数作用域,函数作用域跟它差不多,我们下午呢再说啊,下午再说来这儿呢,先停一下。
我来说两句