3

当程序在浏览器中运行的时候,js引擎会产生三个东西。

clipboard.png
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


彬哥头发多
4.3k 声望1.4k 粉丝

一个会写代码的职业规划师,2本职业规划书作者。争取未来1年帮100个朋友薪资上涨50%。