00:00
那我们下面要讲的是另外一个东西了啊,就别说话了。嗯,下一个我们要讲的一个点呢,叫执行上下文与执行上下文战。嗯,先我们来看一个东西,大家以前应该讲过的,叫变量提升与函数提升。啊,先别看上面的,我们先写写代码啊,有一个非常经典的练习,大家应该以前看过,我给大家先写一下。在这里问他的问题就是什么呢?A输出多少?是吧?
01:08
是不是啊,好,我找个来问问为什么是。嗯。吴永刚。怎么跟人解释它这里面是。这个因为它有一个201.14平方这个变量提升提前来是米的,但是没有赋值,赋值是在。下面这一句时才执行的,所以就是说这个变量在这个函数执行的时候,这个变量已经失明的,它是没有赋值,他为什么不找他呢?因为它是这个,它是这个函数,先从自己本身基本函数内部来整。
02:03
嗯,内部找找到了,谁找到了。是没有,嗯嗯,听好啊,坐下吧,听好了,也就是说我们现在这么写的代码,但真实的运行的流程不是这么运行的。实际上它在我的函数体执行之前,相当于先做了一个什么事,挖了一个A,这个代码相当于是这么写。对吧,那你要这么写的话,他是不是先找的是自己当前这个A啊。能不懂啊懂啊,这是一个比较经典的一个面试题。好,那通过这面试题呢,我们就要去说了啊,这里面其实用了两个知识点,一个变量提升,一个作用域的问题。来,我们来看一下什么是变量提升,也就是说简单来说就是这样的,我啊从BY一个B等于三。
03:07
在我这条按说来说,一般情况下,我们是不是在后面才用啊。对不对,那我在前面能不能访问呢?能,只是它的值为多少。它的值是按DeFine的是吧?嗯,没问题,好,这个东西我们称它为什么变量提升。好,那下面还有一种情况。F分二对吧,那我在这里面呢,写一个他。可不可以可以吧,可以好,我能不能在这个里面直接去调用FN2呢?可不可以可以,是不是可以调用啊,可以调用可以执行吧。
04:06
调用。那实际上这一个我们称它为什么函数提升。嗯,就这么一个事啊,没什么别的。是不是一个是安全的,一个是已经输出了好。嗯。那同时我要在这个地方硕士。半点用过吗?你看我在这还打不下去,看到吗。我在这里这里这里看搞不上去是吧,搞不上去我就在这里面。呃,我不打他,我打他干嘛。
05:02
我打到这里看行不行啊。打到这l.l.B这里。为什么刚才那里打不上去啊。是因为它真正执行的,不是这样执行的,能懂吧,好,我在这里打印啊,就这里打个断联,接着来我刷一下。说一下以后我们要说的一个事情,就是说我现在的币在哪呢?B在哪里?B我去哪能找到啊,我这个地方啊,这里面假设啊,看到这里我window里面有没有有没有有。大家看呢?B现在值是什么啊?你发现了我们还有一个什么东西,是不是还有一个方two啊,是不是方来放二有没有。
06:05
它已经什么是不是有知道,也就是说函数对象创建没有创建了,能理解不?应该能理解才行啊,OK,实际上啊,不仅在这里,其实在我最先的时候,是不是就已经有了能理解,不也就是说一个什么事情。啊,我随便在这里写一个打印出处啊。我先刷一下。那你说我window里面的那个。嗯。B在不在?在不在?也就是说我现在去看那个window嘛,是吧,如果我当前是不是看我当前的情况的window b有没有,有吧,有我的方案有没有。
07:10
我的B是不是有啊,方案有没有。有还是没有一样有对吧,这不有吗。这些我们就称为变量提升,函数提升,那准确的说应该怎么说呢?大概呢,通过y de的变量,或者叫声明的变量,是不是一个意思?来在定义语句之前就可以什么反问到,只是它那时候的值是多少方呢?我们就把这一个现象称为什么变量提升,其实准确的说叫变量声明提升,也就说把变量声明给他提前执行了。复制了吗?没有。好,下面啊,我们平常是不是叫函数提升呢?啊,准确的说叫函数生命提升,也就是说我们通过当选声明的函数,在之前就可以什么直接调用它的值是什么,是不是已经是我这函数定义已就是函数对象啊。
08:20
能不能懂啊。好,现在说的是,无论是变量提升还是函数提升,都是一个结果。啊,都是结果,也就是一个现象结果,那我们现在要看的事情是什么呢。是什么导致了这个结果?对吧,啊,我们要看的是这样一个事情。他们是如何产生的?在说明产之前,我要再给大家写一个特别的。
09:05
嗯。能不能掉,能不能,不能不能,为什么不能,也就是说现在它是它遵循的是变量提升还是函数提升,变量提升。也就是说这个地方我是不是先生命的一个变量啊是吧,跟变量值有关系吗?跟变量值是什么类型,是函数,我就分析函数是什么,不是你函数提升必须使用什么方式来定义函数声明的方式。能不能理解啊,这个大家得知道啊行。那因为这个东西呢,大家都比较懂,所以就不用花太多时间了啊。
我来说两句