js预编译:
如下实例:
function a(a,b,c){ console.log(a); var a=123; function a(){} console.log(a); var b=function(){}; console.log(b); function c(){} console.log(c); } a(1,2,3);
要想准确得到打印结果,必须对js预编译有深刻的理解。只有理解了预编译才能够更好的理解js函数的执行过程。
预编译发生在函数执行的前一刻,预编译有四个过程:
1,创建activation object(简写:ao)
2,寻找形参和变量声明,将形参和变量名作为ao属性名,默认值都是undefined
3,将实参值和形参统一
4,寻找函数体中函数声明,将函数体赋值给ao中对应的属性
按照上述规则,a函数执行前,在预编译阶段ao对象属性变化过程是:
1,创建ao对象
ao{
}
2,寻找函数体中ao属性名
ao{
a:undefined,
b:undefined,
c:undefined
}
3,实参赋值给形参
ao{
a:1,
b:2,
c:3
}
4,寻找函数体中函数声明赋,值赋予函数体
ao{
a:function a(){},
b:2,
c:function c(){}
}
预编译的结果是:
ao{
a:function a(){},
b:2,
c:function c(){}
}
然后函数开始执行,执行到第一行console.log时a值时function a(){},第二行为a赋值123,此时
ao{
a:123
b:2,
c:function c(){}
}
所以console.log(a)==>123
执行到console.log(b)时ao为:
ao{
a:123
b:function(){},
c:function c(){}
}
所以console.log(b)==>function(){}
执行到console.log(c)时ao为:
ao{
a:123
b:function(){},
c:function c(){}
}
所以console.log(c)==>function c(){}
相关推荐
JavaScript预编译是一种优化代码执行效率的技术,尤其在大型项目中尤为重要。预编译的主要目的是在实际运行前处理代码,减少解析和运行时的负担,提高应用的性能。本篇文章将深入探讨JavaScript预编译的概念、重要性...
大家都知道JavaScript是解释型语言,既然是解释型语言,就是编译一行,执行一行,那又何来预编译一说呢?脚本执行js引擎都做了什么呢?今天我们就来看看吧。 1-JavaScript运行三部曲 语法分析 预编译 解释执行 语法...
JavaScript 预编译原理 今天用了大量时间复习了作用域、预编译等等知识 看了很多博文,翻开了以前看过的书(好像好多书都不会讲预编译) 发现当初觉得自己学的很明白,其实还是存在一些思维误区 (很多博文具有...
在JavaScript编程中,理解预编译和全局变量的概念至关重要,因为它们直接影响着代码的执行和变量的作用域。本文将深入探讨这两个概念。 首先,让我们来看看什么是“暗示全局变量”。在JavaScript中,如果一个变量...
预编译是将动态语言(如PHP、Ruby on Rails、ASP.NET等)的代码在部署之前转换为静态HTML、CSS和JavaScript文件的过程。这样做有以下几个关键的好处: 1. **性能优化**:预编译可以减少服务器的计算负担,因为...
本文将深入探讨JavaScript的作用域机制,特别是预编译的概念。在理解这些知识点之前,建议先回顾一下JavaScript的基础语法。 首先,我们要明白什么是作用域。简单来说,作用域决定了一个变量或函数在哪里可以被访问...
Packem,一个预编译的通用JavaScript模块捆绑器,是为了解决现代Web开发中的性能、灵活性和可扩展性需求而设计的。在JavaScript开发领域,模块打包是必不可少的环节,它将分散的源代码文件合并成单一的可执行文件,...
结合CSS预处理器如Sass或Less,JavaScript编译工具还能帮助我们将预处理器的代码转换为浏览器可识别的CSS,简化样式编写,并实现模块化管理。 总之,JavaScript编译工具是提升JavaScript开发效率的关键,它们提供了...
8. **JavaScript插件API**:预编译版中的JavaScript插件可以通过jQuery API进行交互和自定义,例如,通过调用$('#myModal').modal('show')来显示一个模态框。 9. **自定义构建**:虽然预编译版不包含在内,但...
通过预编译,开发者可以在开发阶段就处理好模板,生成静态的JavaScript函数,从而在运行时只需传递数据即可快速生成动态页面。 二、工作原理 预编译工具通常接受一种特殊的模板语法,如Mustache、 Handlebars 或 ...
javascript相对于其它语言来说是一种弱类型的语言,在其它如java语言中,程序的执行需要有编译的阶段,而在javascript中也有类似的“预编译阶段”(javascript的预编译是以代码块为范围[removed][removed],即每遇到...
7. 编译完成后,你可以将预编译的V8库集成到你的项目中,享受快速的JavaScript执行性能。 这个过程可能因具体项目需求而略有不同,但总体而言,gyp.rar文件提供了一个跨平台的方式来预编译V8,这对于在多个平台上...
下载 Bootstrap v4.5.0 版本的预编译文件,以便轻松地将其加入到你的项目中,其中包括:编译并压缩(minified)之后的 CSS 文件和编译并压缩(minified)之后的 JavaScript 插件
本文将深入探讨JavaScript中的两个关键概念:预编译和原型。 **预编译** 预编译是JavaScript引擎在代码执行前进行的一种优化过程,主要涉及到函数声明和变量声明的提升。在JavaScript中,函数声明和变量声明都会被...
将OpenCV预编译为针对node.js和deno环境JavaScript + WebAssembly。 :sauropod: 在此Wasm编译的OpenCV中,无需在计算机中安装OpenCV。 整个OpenCV库已经在此包中( opencv.js和opencv.wasm )。 该模块具有零依赖...
总的来说,预编译的Google V8 DLL库为Windows开发者提供了一种快速便捷的方式,使他们能够在VS2013项目中集成并利用V8的强大JavaScript执行能力。正确地配置和使用这些库,可以使你的应用具备运行JavaScript脚本的...