预编译

js执行顺序: 词法/语法分析 预编译 解释执行

  1. js中存在预编译
        function demo() {
console.log('I am demo');
}
demo(); //I am demo
test(); // I am test
//分析: 由于test函数可以执行,所以javascript一定存在预编译机制
function test() {
console.log(" I am test")
}
var a;
console.log(a) //undefined
a = '123'
  1. 预编译发生在函数执行前一刻
  2. 预编译执行的步骤:
  • 1创建执行期上下文,activation object ,即AO
  • 2找形参和变量声明,将形参和变量声明做为AO的属性名,尚未赋值,值为undefined
  • 3将形参和实参相统一, 即把实参的值传到形参里面去
  • 4在函数体里面找函数声明,赋值函数体
  1. 实例
   function demo(a, b){
console.log(a)
c =0;
var c;
a = 1;
b = 3;
console.log(d)
function d(){
console.log(d)
}
function e(){
console.log(e)
}
}
demo(1)
// 1.创建AO对象{}
// 2.找形参和变量声明
AO = {
a:undefined,
b: undefined,
c: undefined,
}
//3. 形参实参想统一
AO = {
a:1,
b: undefined,
c: undefined, }
// 4.在函数体里面找函数声明,值赋函数体
AO = {
a:1,
b: undefined,
c: undefined,
d:function d(){
console.log(d)
},
e: function e(){
console.log(e)
}
}
// 5.解释执行

js中的预编译的更多相关文章

  1. JS作用域和预编译(转载 学习中。。。)

    JS在页面加载过程中顺序执行.但是分块预编译.执行. JS在执行前会进行类似”预编译”的操作,而且先预声明变量再预定义函数. 此时注意,是声明,不是定义,如:var a = 1; 在预编译中,只是执行 ...

  2. DelphiXE10.1项目中增加预编译的方法

    操作: 菜单选择Proceject->Options->Delphi Compilerz在Conditional Defines(第一行)中添加预编译标识.例:VCL代码:uses{$IF ...

  3. iOS中的预编译指令的初步探究

    目录 文件包含 #include #include_next #import 宏定义 #define #undef 条件编译 #if #else #endif #if define #ifdef #i ...

  4. C中的预编译宏定义

     可以用宏判断是否为ARC环境 #if _has_feature(objc_arc) #else //MRC #endif C中的预编译宏定义 -- 作者: infobillows 来源:网络 在将一 ...

  5. C/C++中的预编译指令

    工作中遇到的: 一个头文件中的: #pragma warning(disable:4996)#pragma warning(disable:4244)#pragma warning(disable:4 ...

  6. C#中的预编译指令介绍

    原文:C#中的预编译指令介绍 1.#define和#undef 用法: #define DEBUG #undef DEBUG #define告诉编译器,我定义了一个DEBUG的一个符号,他类似一个变量 ...

  7. 在VisualGDB中配置预编译头加快编译速度

    今天是中秋佳节,但是写完已经是第二天凌晨了,还是祝大家中秋快乐! VS对C++的支持相较GCC太弱了,连续几个VS版本对C++的改进都很小.很少.对Cpper也许是一种痛,我们也许希望能使用VS的强大 ...

  8. javascript中的预编译问题

    Js作为脚本语言,可以不需要编译直接运行,但遇到类似变量或者函数同名,预编译方面的知识可以帮助我们更好解决问题. 示例: 这是一段js中普通的函数调用代码 <script>1.    // ...

  9. js - 基础 之 预编译总结

    js运行步骤 语法解析(检查有无语法错误) 预编译 解释运行(将 js 翻译成计算机识别的语言(0.1组成),翻译一行执行一行) 预编译 [全局]: 创建 GO( Grobal Object ) 对象 ...

随机推荐

  1. VBA/VB6/VBS/VB.NET/C#/Python/PowerShell都能调用的API封装库

    API函数很强大,但是声明的时候比较繁琐. 我开发的封装库,包括窗口.键盘.鼠标.消息等常用功能.用户不需要添加API函数的声明,就可以用到API的功能. 在VBA.VB6的引用对话框中引用API.t ...

  2. 非IoC方式访问Servlet API的两种方法

    使用ActionContext访问 ActionContext来自com.opensymphony.xwork2.ActionContext 具体实现代码段如下: <span style=&qu ...

  3. form中采用图片作为提交按钮

    <span style="font-size:14px;"><FORM name="formName" action="xxxx&q ...

  4. 简单标签 SimpleTagSupport示例

    最近处理JSP页面,需要把数据库查到的原始值,根据数据字典转换成更加直观的值.比如查到的结果是 01,jsp页面展示‘身份证’. 如果值比较少,就直接用c:if标签处理了,无奈接触的值比较多,只想到了 ...

  5. Jenkins+ant+jmeter搭建接口自动化测试环境

    一.jmeter 1.下载jdk并安装配置 2.下载jmeter,并解包 下载地址:http://jmeter.apache.org/download_jmeter.cgi 二.ant 1.下载解包并 ...

  6. crm项目-权限组件

    ###############    表结构分析     ################ """ 表结构设计: 1,四张表 用户表,userinfo,这个表本身不会被创 ...

  7. TPO1-3 Timberline Vegetation on Mountains

    Wind velocity also increase with altitude and may cause serious stress for trees,as is made evident ...

  8. MIO、EMIO、AXI_GPIO区别与联系

    https://blog.csdn.net/u014485485/article/details/78141594            点灯实验

  9. win10安装navisworks失败,怎么强力卸载删除注册表并重新安装

    一些搞设计的朋友在win10系统下安装navisworks失败或提示已安装,也有时候想重新安装navisworks的时候会出现本电脑windows系统已安装navisworks,你要是不留意直接安装n ...

  10. SQL update 关联更改,内部需要引用表名

    select A.Id,A.Email,( select C.Email from [nopCommerce].[dbo].[Customer] C left join [nopCommerce].[ ...