百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> 阅读器是怎样解析JavaScript的?解析道理介绍
分享文章到:

阅读器是怎样解析JavaScript的?解析道理介绍

发布时间:09/01 来源:未知 浏览: 关键词:
阅读器是怎样解析JavaScript的?本篇文章就来带大家认识阅读器解析JavaScript的道理,有必然的参照 价值,有需要的伴侣可以参照 一下,但愿对你有所帮忙。【引荐视频教程:JavaScript视频教程】

阅读器解析JavaScript道理特点:

1、跨平台

2、弱类型 javascript 定义的时候不需要定义数据类型,数据类型是按照变量值来肯定的.

var a = 10; //数字类型
var a = true //boolean类型

( 强类型: 定义变量的时候需要定义变量的类型:例如java,C#中的int a = 10 boolean a = true,直接肯定了数据类型)

3、说明施行,逐行施行

javascript 施行历程

1、语法检测

就是看你有没有根本的语法错误,例如中文,关键字错误...

2、词法剖析(预编译)

3、逐行施行

词法剖析

预编译的历程(两种状况)

1、全局(直接是script标签中的代码,不包罗函数施行)

以下面demo为例:

 console.log(a); console.log(b)
 var a = 100;
 console.log(a) var b = 200 var c = 300 function 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赋了一次值,值改动为100
      GO = {
          a : 100,
          b : undefined,
          c : undefined,
          fun : function fun(){
                
             }
        }

2部分( 函数施行的时候)

以这个demo为例:

 num = 100510)

1)、预编译的时候

GO = {
       num : undefined,
       fun : function
    }

2)、施行历程

GO = {
                num : 100,
                fun : function
            }

3)、函数调取,也是会生成本人的作用域(AO:active object),AO活动对象. 函数调取时候,施行前的一瞬时发生的,假如有多个函数的调取,会发生多个AO

ⅰ、函数施行前的一瞬时,生成AO活动对象

fun.AO = {
                
            }

ⅱ、 剖析参数,形参作为对象的属性名,实参作为对象的属性值

fun.AO = {
                num : 5
            }

ⅲ、剖析变量声明,变量名为属性名,值为undefined,假如碰到AO对象上属性同名,不去做任何改动

fun.AO = {
                num : 5
            }

ⅳ、剖析函数声明,函数名为属性名,值为函数体,假如碰到AO对象上属性同名,则无情覆盖(在这里没有函数声明,跳过)

4)逐行施行


实例:

在这里我们看几个实例:

实例1:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script type="text/javascript">
            console.log(test);                //function
            function test(test){
                console.log(test);           //function
                var test = 123;
                console.log(test);            //123
                function test(){
                    
                }
                console.log(test);            //123
                var test = function(){}
                console.log(test);            //function
            }
            test(10);
            var test = 456;
            
            /*1.剖析变量
            GO={
                test:undefined
            }
            2.剖析函数{
                test:function
            }
            3.逐行施行
            第21行函数的调取    
                3.1test.AO={}
                3.2参数
                test.AO={
                    test:10
                }
                3.3变量声明
                test.AO={
                    test:10
                }
                3.4函数的声明
                test.AO={
                    test:function
                }
                4逐行施行
                */
        </script>
    </body>
</html>

实例2:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script type="text/javascript">
            function test(){
                console.log(b);   //undefined
                if(a){    //undefined转换成false
                    var b = 100;
                }
                c = 123;
                console.log(c);    //123
            }
            var a;
            test();
            a = 20;
            test();
            console.log(c);   //123
            
//            1.生成GO
//            GO = {
//                
//            }
//            2.var
//            GO = {
//                a : undefined
//            }
//            3.函数声明
//            GO = {
//                a : undefined,
//                test : function
//            }
//            4.逐行施行
//                4.1.1    18行,test调取,生成test.AO ={}
//                4.1.2    参数 没有,跳过
//                4.1.3    var 
//                test.AO = {
//                    b : undefined
//                }
//                4.1.4    函数声明    没有,跳过
//                4.1.5    结果
//                test.AO = {
//                    b : undefined
//                }
//                4.1.6    逐行施行
//                    14行,改动GO
//                    GO = {
//                        a : undefined,
//                        test : function,
//                        c : 123
//                    }
//                    
//                4.2   19行   a值发生了改动
//                GO = {
//                    a : 20,
//                    test : function,
//                    c : 123
//                }
//                
//                4.3  20行,test调取   生成test.AO={}
//                4.3.1 参数 没有
//                4.3.2 变量声明
//                test.AO = {
//                    b : undefined
//                }
//                4.3.3 函数声明  没有
//                4.3.4 结果
//                test.AO = {
//                    b : undefined
//                }
//                4.3.5 逐行施行
//                test.AO = {
//                    b : 100
//                }
        </script>
    </body>
</html>

以上就是本篇文章的全部内容,但愿能对大家的学习有所帮忙。更多出色内容大家可以关注百分百源码网相关教程栏目!!!

以上就是阅读器是怎样解析JavaScript的?解析道理介绍的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板