当程序在浏览器中运行的时候,js引擎会产生三个东西。
1.全局对象 在js程序任何地方都能访问到的对象,在浏览器中是window
2.this 变量指向window
在nodejs中 this是什么?
3.外部环境
暂时不讲。
一图抵万言
好,我知道js引擎怎么折腾你的代码,那么我们看看执行上下文,也就是管理正在运行的程序的部分是如何工作的。
不废话是时候该上代码了。
console.log(a);
var a =12;
b();
function b(){
console.log(5);
}
结果是啥你想对了没?
为什么这样?
因为有一个变量声明提升的过程。
记住一句话,变量声明提前,赋值原地不动。函数声明直接提前。
这里再来一个问题为什么这样?
说这个之前先说一个例子,
console.log(a);![js运行原理创建](/Users/L/腾讯课堂/深入了解js/js运行原理创建.png)![js运行原理创建](/Users/L/腾讯课堂/深入了解js/js运行原理创建.png)
b();
functon b(){
console.log(5);
}
这里要注意,undefined,是一个值,不等于不定义变量
程序执行和人眼阅读类似,从上到下,从左到右,执行过去的不会再回去执行一遍。
执行过程,函数执行和销毁过程。
函数就像刷盘子,你懂得,后进先出。
变量预解析,赋值外部环境之间的关系。
为什么有预解析。
ES6作用域,let关键字 块级作用域
var
let
作业:寻找各大公司函数预解析题目10道题,要求做对8道。如果做不对,继续找,直到合格。
如有疑问加入和更多资料,**
QQ群:552079864
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。