[JavaScript]01-JavaScript运作原理

JavaScript如何运作?

直译/编译式语言

直译式语言原始码-(直译器)-代码生成-(运行)-应用程式错误直接反映在环境中(console)优点:弹性较佳,不需定义型别逐行执行,不需整份写完就能测试编译式语言撰写原始码-(预先编译)-代码生成-(运行)-应用程式预先编译即可除错(不是等到运行时报错)-效能较佳优点事前型别检查,减少型别错误整份代码转译为机械码,速度较快

JavaScript直译器转换过程

语法基本单元化(解析标点符号/词彙)-Tokenizing抽象结构树(定义原始码结构)-Abstract Syntax Tree AST代码生成

线上原始码单元化

var ming='Xiao ming';

语法基本单元化-在这个步骤,只有单纯地将程式码逐步解析,=不会被视作指派,而是符号

[    {        //var 被解析为关键字        "type": "Keyword",        "value": "var"    },    {        //ming 被解析为识别符        "type": "Identifier",        "value": "ming"    },    {        //=被解析为符号        "type": "Punctuator",        "value": "="    },    {        //'Xiao ming'被解析为字串        "type": "String",        "value": "'Xiao ming'"    },    {        "type": "Punctuator",        "value": ";"    }]

抽象结构树化,注意,此时亦未执行代码功能(赋值)

{    "type": "Program",    "body": [        //阵列每一元素皆为一组语意        {            //解析出语意为变数宣告            "type": "VariableDeclaration",            "declarations": [                {                    //变数宣告者                    "type": "VariableDeclarator",                    "id": {                        //变数辨识符                        "type": "Identifier",                        "name": "ming"                    },                    "init": {                        //变数值                        "type": "Literal",                        "value": "Xiao ming",                        "raw": "'Xiao ming'"                    }                }            ],            //变数定义方式            "kind": "var"        }    ],    "sourceType": "script"}

RHS and LHS

RHS:Right-hand side:右侧变数的值会在编译时期检查错误LHS:Left-hand side:值左侧变数只会在执行期间检查错误
//LHSvar ming='Xiao ming';//编译时期报错'Xiao ming'='man'//RHSconsole.log(ming);var man=ming;//编译时期不会报错console.log(a)

下一篇:2-JavaScript作用域


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章