欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 前端技术 > javascript >内容正文

javascript

浏览器解析javascript原理 -凯发k8官方网

发布时间:2024/10/12 javascript 29 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 浏览器解析javascript原理 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1.浏览器解析javascript原理特点:

1.跨平台 
2.弱类型 javascript 定义的时候不需要定义数据类型,数据类型是根据变量值来确定的.
     var a = 10; 数字类型
          var a = true boolean类型
  ( 强类型: 定义变量的时候需要定义变量的类型:例如java,c#中的int a = 10 boolean a = true,直接确定了数据类型)

3.解释执行,逐行执行

 

2.javascript 执行过程

1.语法检测 看你有没有基本的语法错误,例如中文,关键字错误...
2.词法分析(预编译)
3.逐行执行

3.词法分析

预编译的过程(两种情况)
1.全局(直接是script标签中的代码,不包括函数执行)

以下面demo为例:

console.log(a);console.log(b)var a = 100;console.log(a)var b = 200var c = 300function a(){}function fun(){}

 

    执行前:
 1) 首先生成一个go(global object)对象,看不到,但是可以模拟出来用来分析

go = {//自带的属性都不写}

   2) 分析变量声明,变量名为属性名,值为undefined 

go = {a : undefined,b : undefined,c : undefined}

    3)分析函数声明,函数名为属性名,值为函数体,如果函数名和变量名相同,则无情覆盖

go = {a : function a(){},b : undefined,c : undefined,fun : function fun(){} }

    此时,go就是预编译完成的最终对象,词法分析结束。

   4) 逐行执行,分析过(变量声明,函数声明)不用管了,只管赋值(变量赋值)

a赋了一次值,值改变为100go = {a : 100,b : undefined,c : undefined,fun : function fun(){}}

   2.局部( 函数执行的时候)

    以这个demo为例:

var num = 100;function fun(num){console.log(num) }fun(5)fun(10)

    1)预编译的时候

go = {num : undefined,fun : function}

    2)执行过程

go = {num : 100,fun : function}

    3)函数调用,也是会生成自己的作用域(ao:active object),ao活动对象. 函数调用时候,执行前的一瞬间产生的,如果有多个函数的调用,会产生多个ao
    3.1 函数执行前的一瞬间,生成ao活动对象

fun.ao = {}

    3.2 分析参数,形参作为对象的属性名,实参作为对象的属性值

fun.ao = {num : 5}

    3.3 分析变量声明,变量名为属性名,值为undefined,如果遇到ao对象上属性同名,不去做任何改变

fun.ao = {num : 5}

    3.4 分析函数声明,函数名为属性名,值为函数体,如果遇到ao对象上属性同名,则无情覆盖(在这里没有函数声明,跳过)

   4)逐行执行


 

实例:

  在这里我们看几个实例:

  1,

 


 

  2,

 

总结

以上是凯发k8官方网为你收集整理的浏览器解析javascript原理的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图