00:00
好,我们就来上课,那上节课呢,我们看完我们函数的参数,这节课我们再看一下我们的函数变量作用域啊,所谓函数变量作用域呢,就是函数相关的这个变量的作用范围啊,那咱们来看一下,在这里边有这么几个概念,来我们新建一个这个PP文件啊,叫做零发,然后呢,我们起个名叫做范围吧。好了,这里面我们要来学习的是。函数变量作用域。好了,那在这里边啊,我们来看在这里面首先有这么一个。情况啊叫什么呢?叫做一个叫做局部。变量啊,一个叫什么呢?叫做全局变量啊,有这么几个概念,我们先来。了解一下啊,这个叫全局。变量还有一个什么呢?还有一个普通变量。普通变量啊,什么叫普通变量呢?咱们来看啊,比如说我在页面中我定义一个内到了。等于什么呢?等于孙建奎好了。
01:01
那这只是定义一个变量对吧?那现在我再来证明一个函数。来个DEMO啊,然后呢,在这里边我们来干嘛呢?我来输出到了内,咱们来看在这里边可不可以使用,然后我调用这个DEMODEMO,那么这个时候我们来看。范围告诉什么呀?说under find这个name没有被定义,在哪呢?在我的第六行,第六行是哪?第六行是不是这里对吧?那么也就是说我实际上在函数外部声明的这个变量,它就是普通的变量。对不对,哎,那么它的作用范围呢?指数用在哪儿啊,是不是只在我的当前页面中啊。对不对,这就是咱们的这个普通变量啊,所以大家先要明白这个概念,那咱们来看一下在这里边。这么普通变量在函数的外部声明的变量,其作用范围就是当前页面部分对吧,函数内部是不是无法使用对吧?哎,这就叫什么普通变量啊,那么普通变量我们知道另外还有什么呢?还有局部变量来把这个。
02:01
注释掉了啊叫做什么在。函数外部。定义的变量啊,在函数内部无法使用啊,这是这是普通。变量。普通变量,那么另外还有什么呢?就局部变量,局部变量什么叫局部,就是只能在这一部分使用,对吧,相当于咱们打麻药局麻一样啊,那么咱们再来看啊,我在这里边也一样,Function在这里边我再定义一个DEMO1这么一个函数,好了,我在这里边来声明一个name等于什么呢?比如说等于大熊,诶然后呢,注意我在函数的外部,比如在这里边我再来EE这个name,不用name了,换一个啊,比如说这里边我来个NAME1啊内一,那我再说来eo这个NAME1好了,那现在我们来看可不可以。刷新是不是告诉我内幕一有没有被定义对不对,那有人说了,那你可能没调用函数没执行,没执行是不是就没声明这个变量对吧,那好,那我就调函数让他执行一下呗,对不对,那这个时候我们再来看刷新。
03:01
是不是也报错对吧?哎,也就是说我们在函数内部声明的变量,它的作用范围只在函数内部啊,在函数内部声明的。变量,其。作用范围。只在。函数内部啊,那么这种就是什么呀,局部变量,这种就是局部变量啊,也就是说你的这个变量只是在函数内部声明的对不对,那么它的作用范围只在这个函数内部,函数一旦执行结束,这个变量基本什么基本销毁好,那么另外局部变量还有什么呢?咱们来看我们的行参啊,比如在这里边我们来定义定义什么str。Str等于,等于什么呢?等于。一堆堆井号对吧,那么行参我能不能在外部调用的,我来我来艾一个SSPR啊,按完以后现在再来刷新,你看是不ST也报错对吧?它的作用范围是不是也在这个函数的内部啊,对不对?你看我再来刷新,是不是函数内部的输出样解啊。哎,所以什么呀,行参也是局部变量对吧?行拆也是局部变量啊,这就是咱们的局部变量,那咱们看一下笔记这里边啊,咱们怎么说的局部变量是不是在函数中定义的变量就是局部变量,对吧?其实作用范围呢,仅在函数内部,那么形参也是函数内部变量,也叫局部变量啊好了,那我们知道了局部变量,知道了普通变量,那接下来什么是不是就是我们的全局变量,那什么叫做全局变量,是不是在我函数的这个外部,我们定义一个变量在函数内部可以使用,这是就是咱们的全局变量。
04:31
对不对,那OK。在这里边啊,我们把这些错误的都注释掉啊,尽量不让他报错来。刷新好了,那我们再来看全局变量,在这里边我们来测试一下,叫做。哎,我再新建一个吧,来新建一个PP的文件啊,叫做零九格lo PB全局变量,这里面我们要给大家演示的是全局变量。整你们了啊。
05:00
全局变量,那么他说了在函数的这个内部和外部都可以访问的或者使用的变量是不是全局变量,对吧,也就是说在函数。内外都可以使用,或者访问的就是什么全局变量,对吧?那咱们刚才说了一个普通变量,还记得吧,比如在这里边我定义一个这个str等于什么,等于瞬间规,然后呢,我在函数内部能直接使用吗?是不是使用不了啊?哎,这里边比如说我来个DEMOD还是DEMO啊,括号在这里边我们想II这个SR是不行的,对吧?因为这个S就是一个普通变量,还不是什么,还不是全局变量嘛,所以这里边你看我来访问格global是不是不好甩。哎,没有,哎没调用是吧,我说没报错呢,来我们调用一下,你看说不好使报错吧,哎,那咱们说了,在这里边,我们这个全局变量怎么能能说明出来呢?全局变量没有办法直接声明啊,那么怎么办呢?我们全局变量是做出来的啊,那么怎么做呢?咱们来看在这个函数的外部是不是有一个变量对吧,那在函数内部通过。
06:07
Logo。关键字来声明啊,或者来这个强调,这是一个全局变量啊。来声明全局变量啊,那格global你要全局谁,我要全局这个Dollar SR好了,那么这个时候你看我再输出这个SR能不能输出瞬间轨是不是可以了,对不对,那包括我在这里边,比如说在这里函数内部啊,在函数内部尝试改变全局变量的值,也就是说这个到str等于什么呢?我是这不算好了,那么当它改变完以后,我在调用完函数以后,我在这个下边来A口str,它应该输入什么?是不是输出我是这么转,你看走你是我是这么转。看到了吗?哎,也就是说你看当我调用这个函数的时候,代码就会执行,从上到下执行是执行这个函数对吧?执行函数是不是生明了这个全局变量,哎,把它证明成全局的了,全局在函数内边是不是就可以使用了,所以这时候输出输出了新间规,输出完以后我把这个变量重新赋值了,对吧?复值完我什么都没干,那我在调用函数之后,比如说函数结结束了以后,是不是我再下边再输出str的时候,这个变量是不是就会被变了。
07:19
对不对,我输HT的值是不是就是我这不串了,哎,这是咱们的全局变量,所以全局变量的第一种实现方式怎么实现呢?是不是通过格global卜关键字,你看实现全局变量方法一,在函数内外部具有一个变量对吧?然后在函数内部也要具有一个什么同名的变量,而且在函数内部同名变量前使用格global关键字来修饰就可以实现什么全局变量了,那么大家注意在我修饰这个全局变量的时候,我能在这里边直接给它赋值吗?比如说我是。我是新的字符串,好,你看可不可以在里边再来刷新,是不是给我报错,而且是语法错误,看到了吗?来在我的机器啊,也就是说当我们声明这个全局变量的时候,是不允许复值的啊,在明变量全局变量这个时候是不允许复的,你要想复值,可以在它的下一行全边可以复值,对吧,只是在当前行是不允许复值,所以在这里边。
08:13
我给大家写了一个注意了什么样格罗卜声明全局变量时禁止什么禁止负值,好了,哎,那好了,那再来看你看啊,这里边说了,如果一个变量在函数内部已经赋值之后,使用格global卜进行全球化声明,那么结果该变量值变成什么函数外部变量值什么意思?比如说在这里边你看我们再来一个f UC function,叫做DEMO1括号括号对吧?那么现在我在这个函数内部去声明一个变量对吧?比如说我这里面来一个name那个什么,哈哈。等于哈哈,或者等于融资教育啊好了,那现在我来输出这个内幕的时候,这个叫用DEMO1。Be me,好,来我们来看一眼啊,这里边来刷新是不是融资教育输出了,看到了吧?哎,那好了,那如果在这里边我搁global声明这个Dollar内呢,如果一旦我格global声到内,这个时候我再输出这个到内,它就是外部的值了,你看刷新是不是没有值了。
09:09
因为什么?因为到内在外部是不是根本就没有值?对不对,哎,那这里面我不用它,我用打印啊D打印这个打印的内。啊,抓紧看是不是为纳对吧,因为他说了函数外部没有,那怎么办?在这里面我定义一个到内等于什么呀,等于你好。或者等于学习原地好了,那现在我们来看它的,再求出是不是学习原地。看到了吧?哎,也就是说如果在这里边有值对吧,有一个这么一个变量,那么当我一旦用格global来声明的时候,那么在使用这个变量时,它就是外部的值了,看明白了吧?哎,你想想使用这个值怎么办?我只能在格罗卜之前,我在他之前输出这个内幕,那它还是融资教育。看到了吗?哎,所以这块大家一定要注意啊,一定要注意好了,这就是咱们第一种全局变量的实现啊,那么第二种全局变量呢,我们通过什么系统预定义变量叫做Dollar来实现啊,那在这里边,比如说咱们来看在这块啊,我给你打一个分割线。
10:09
全局变量实现方实现方法啊啊,那比如说一样,我在这里面定义一个这个函数,比如说叫做DEMODEMO2好了,这里边有一个函数,在函数这里边呢,我通过什么呢?通过一个这个。系统预定义变量啊,我来打印他吧,先到了g los格globals,然后我们调用DM。对不好,那现在我们来看啊,在这里面我们来刷新。DEMO2。量。选择了被定义的啊加括号没加括号是吧。走你好了,你看我格S是不是打印了我全局的这么一个数组,对吧?啊,它本身是一个数组会干嘛呢?它会反馈页面中可以可用的所有变量,你看页面中是不是有刀了,盖的是不是到下POS了,还有什么cookie server对吧?Cookie我们学,但S是不是也见到了,那你再往下来,你看还有什么呢?还有的是一个叫格lo box,而且这个格lo数字是什么呀?是不是引用的看到了吗?前面是加引入符号的,那所谓的引用是不是只要有一个变,两个是不是都变了。
11:18
对不对?哎,那你看我页面中定义什么,我定义了str,我还定义什么,还定义了name,比如在这里边啊,我自己再重新来一个,如说我定义一个Dollar变量,Dollar g Dollar格。GLOL对吧,我这个变量等于什么呢?等于我是一个测试变量。好了,那现在你看我在我的第27行打印这个格global纸上算数啊,这里边有没有这么一个变量,你看格global是不是我是一个测试变量,看到了吗?而且它这个数组是什么样,是引用的,只要是引用的是不是一旦它发生改变,对应的外部的值也是变量了,也是改变的,这是不是咱们引用这个引用变量,哎,那也就是说在这里面你看好了,我把它注释掉啊,那既然想改变呢,行啊,我想输出,输出谁呢?输出这个格萝卜对不对,那是不是就是包了。
12:03
GL。Gl globals这个数组对吧?这个数组里边你看这是不是这个数组啊,这个数组里边是不是有一个下标叫做global的对不对,那是不是就是中国号加上它的变量名叫做GLBL格global,那你看我能不能输出我是一个测试变量啊,在这里面再来刷新,我是一个测试变量,有没有输出对吧?同样我在函数的外部来,我输出eho。输出什么呀,输出到了GLBL输出这个格lo的时候,来你再来刷新。是不是也可以对吧,但是咱说了它是不是全局变量,咱们可以测试一下,只要在它的内部发生改变,比如说Dollar这个格罗S里边的谁呀?格罗是不是加上我的函这个变量名就行了,如果等于,等于什么呢?等于叫做。在工作中学习。在。学习中。工作好了,那现在我在这个第32行输出的东西,你看是什么来走,你是不是在工作中学习再学习工作看到了吗?哎,因为我是先输出你原有的内容再去改变的,对吧,当改变完以后。
13:06
我对应的输出外部和变量值是不是也是改变了,这是不是我们之前讲PP变量的时候讲的什么讲的一个什么变量的引用吧?哎,这就是咱们的第二种实现全局变量的方法,也就是通过什么通过格globals去调用,对吧?Globals本身是一个数度去调用什么调用里边的这个名称啊,就是我的变量名,那么在这里边依然可以实现什么,实现我们的这个全集变量啊好了,那我们来看一下笔记在这里边。在函数内部可以使用什么到格加变量名的方式直接调用函数外部的变量值对吧?那么此时函数内部。可以使用对吧,实现了什么,另外一种方式呢,全局变量啊,因为什么,因为到格这个是引用过来的速度,对不对,哎,因为。因为。包了。S格是。
14:05
引用的数组对不对,哎,也就是说这个怎么样,这个当。糟了,G lo。BL。中括号变下来名。当这个数组的值发生改变。等于一个新知识,新知识对不对,那对应。函数。外部的。变量随变量,是不是就到了变量啊。到了,别了没?这块也是一样,这块不叫变量,是变量名对吧,没有刀了符嘛,啊变量名,所以对应外部的变量,到了变量名也是。发烧。改变的啊,实现了另外一种方式了,全局变量啊好了,这就是咱们全局变量,那这个呢,大家注意了解就行了啊,因为我们用的很少,但是呢,大家要知道我们有这么三个概念,一个叫局部,一个叫做什么全局的两个对吧,那实际上呢,在全局里面有两个概念,一个叫普通变量,一个叫全全局变量,普通变量只是在函数外部使用,而全局变量在函数内外都可以使用,而局部变量只能在函数内部使用啊,这就是咱们这个变量的作用范围啊好了,那这课我们到这里。
我来说两句