美文网首页
JavaScript解析器

JavaScript解析器

作者: JuanitaLee | 来源:发表于2018-08-23 11:11 被阅读116次

执行js代码一般分两步:1.预解析代码。 2.逐行执行代码。
当解析器进入执行环境时,变量对象就会添加执行环境中声明的变量和函数作为它的属性,这就意味着变量和函数在声明之前已经可用,变量值为undefined,这就是变量和函数声明提升(Hoisting)的原因,与此同时作用域链和this确定,此过程为解析阶段,俗称预解析。接着解析器开始执行代码,为变量添加相应值的引用,得到执行结果,此过程为执行阶段。
举个例子:

var a=1;
var b=2;
function c(){
  alert('hello');
}

预解析代码呢,主要会把var , function , 参数等一些东西 存储进仓库里面(内存)。
1.var 一般用于声明变量,预解析代码的时候,等号后面的赋值过程不会执行,所以预解析时的var 变量 都是未定义的。
2,.function 函数呢,预解析的时候,值就是函数里面的内容。

当变量和函数重名时:就只留下函数的值,不管顺序谁前谁后。所以函数的优先级比变量高。注意:这只是预解析。
当函数和函数重名时:会留下后面那个,会遵循上下文机制。


我们来分析一下:
第一步:预解析
上面说过,预解析时只会把var , function ,参数等存储起来,所以:
执行到第1行时,a 的值是未定义。
执行到第2行时,b 的值是未定义。
执行到第3行时,c 的值是函数本身,也就是function c(){alert('hello');}。
第二步:代码逐行执行
预解析完成之后,就是代码逐行执行了
第1行,a被赋予值1
第2行,b被赋予值2
第3行,只是函数的声明,还未调用函数。

举个变量和函数重名的例子:

<script>
alert(a);//弹出function a(){alert(4)}
var a=1;
function a(){alert(2);}
alert(a);//弹出1
var a=3;
alert(a);//弹出3
function a(){alert(4);}
alert(a);//弹出3
</script>

相关文章

  • 学习笔记 | JavaScript基础(一)预解析

    JavaScript 代码是由浏览器中的 JavaScript 解析器来执行的,JavaScript 解析器在运行...

  • No.24 JavaScript预解析

    JavaScript 代码是由浏览器中的 JavaScript 解析器来执行的。JavaScript 解析器在运行...

  • JS预解析

    javascript代码是通过浏览器中的javascript解析器来执行的,javascript解析器在运行jav...

  • Javascript变量提升

    JavaScript代码的执行是由浏览器中的JavaScript解析器来执行的。JavaScript解析器执行Ja...

  • acorn.js介绍

    一个用JavaScript编写的,小巧、快速的JavaScript解析器。 当在CommonJS(node.js)...

  • 关于服务器端JavaScript

    Rhino是基于Java的JavaScript解析器,实现了通过JavaScript程序访问整个JavaAPI,N...

  • web优化相关学习笔记

    网页解析的过程 一个渲染引擎主要包括:html解析器、css解析器、javascript引擎、布局模块、绘图模块等...

  • 网页渲染流程

    首先是网页内容,输入到HTML解析器,HTML解析器解析,然后构建DOM树,在这期间如果遇到JavaScript代...

  • Node的简单使用

    Node 1.node是javascript的解析器,是javascript服务器的运行环境。 Node的简单实用...

  • JavaScript解析器

    执行js代码一般分两步:1.预解析代码。 2.逐行执行代码。当解析器进入执行环境时,变量对象就会添加执行环境中...

网友评论

      本文标题:JavaScript解析器

      本文链接:https://www.haomeiwen.com/subject/mkspiftx.html