如何成立一个网站,中国最近军事新闻视频,优区生活app官方下载,专业做网站的网站JavaScrip是一门编程语言 浏览器的工作原理
所以得域名都会被解析成ip地址#xff0c;ip地址就是服务器地址#xff0c;服务器地址会返回一个html文件#xff0c;解析html遇到css文件和JavaScript标签就会把相应内容下载下来进行解析。 认识浏览器的内核 浏览器的渲染过程 …JavaScrip是一门编程语言 浏览器的工作原理
所以得域名都会被解析成ip地址ip地址就是服务器地址服务器地址会返回一个html文件解析html遇到css文件和JavaScript标签就会把相应内容下载下来进行解析。 认识浏览器的内核 浏览器的渲染过程
解析方式通过浏览器内核解析通过HTMLParser将其转为DOM树dom中的js代码可对dom树进行操作。 css由cssparser进行解析生成css规则css规则与domtree结合生出渲染树render treeredertree需要布局的设计生成最终的渲染树 认识JavaScrip引擎 常见的JavaScrip引擎 浏览器内核和JS引擎关系 V8引擎的原理
js代码借助v8引擎通过解析词法分析和语法分析然后生成ast树抽象语法树可以将抽象树转为字节码通过lgnition库转换也可以通过turboFn将执行对此的函数标为hot函数然后直接转为机器码再下次操作发现机器指令发生变化就会进行deoptimization转换成字节码。 解析图
内核Blink会解析html把js下载下来把js代码给到v8引擎对编码进行转化然后进行Scanner通过Scanner把代码转换成很多tokens把tokens给到parserparser将tokens转成ast树由ignition将其转为字节码字节码再转为cpu可理解的指令。通过parser时还有个reparser预解析。 V8执行的细节 初始化全局对象 执行上下文栈调用栈 GEF被放到ECS中 GEC开始执行代码 代码被解析v8引擎会创建一个对象将数据都放入其中。然后开始运行代码v8为了执行代码v8引擎内部会有一个执行上下文栈。想要执行的内容都需要放入该栈中一般在该栈中会放入函数。如果执行的是全局代码需要全局上下文其中有个Vo用来放创建的那个对象然后再将其放入栈中,开始执行就开始一个个按顺序开始赋值。所以当你使用数据时再他出现前使用只会显示undefined不会找不到数据因为在运行前所有数据就已经放在创建的对象中了。
遇到函数执行方式
对于全局代码的运行解析首先在编译阶段会创造出一个go对象也就是全局对象会把使用的类和创建的变量都放入其中但是还没赋值目前的变量的值都是undefined要对全局代码进行执行时会创建全局上下文将go放入其中的vo中运行时在vo的go中找并赋值。 当全局代码中有函数时函数也会放入go对象中但是再申请一块空间放该函数的父级作用域以及函数的执行代码块。根据存储函数空间该函数时会生成函数执行上下文其中有vovo中有aoao是存放函数的变量等数据。在这里面的数据目前值都是undefined然后执行函数代码时就会从vo的ao中寻找相应的所需的内容也将该赋值的赋值。函数执行完后函数上下文就会弹出该栈进行销毁 当在该函数没有找到所需的变量就会通过作用域链去父级找 函数的父级作用域跟调用位置没关系跟定义位置有关系 变量环境和记录 作用域提升面试题 会直接把m当做全局变量