JavaScript函数——预编译

四部曲

  1. 创建AO对象
  2. 找形参和变量声明,将变量和形参名作为AO属性名,值为undefined。
  3. 将实参值和形参值统一
  4. 在函数体内找函数声明,值赋予函数体。

权重按顺序依次增加。以下例子即可体现上述规则

function fn(a){
    console.log(a);

    var a = 123;

    console.log(a);

    function a(){}

    console.log(a);

    var b = function(){}

    console.log(b);
}
fn(1);
//f a(){}
//123
//123
//f (){}

原文地址:https://www.cnblogs.com/y-dt/p/9787460.html

时间: 2024-07-31 05:12:57

JavaScript函数——预编译的相关文章

javascript的预编译和执行顺序

最近在复习javascript的事件处理时发现了一个问题,然后也是我来写javascript的预编译和执行顺序的问题 代码: 代码一<html> <head> <title>事件处理</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <script type='text/javascript'>

JavaScript的预编译和执行

JavaScript引擎,不是逐条解释执行javascript代码,而是按照代码块一段段解释执行.所谓代码块就是使用<script>标签分隔的代码段. 整个代码块共有两个阶段,预编译阶段和执行阶段 一.编译阶段 对于常见编译型语言(例如:Java)来说,编译步骤分为:词法分析->语法分析->语义检查->代码优化和字节生成. 对于解释型语言(例如JavaScript)来说,通过词法分析和语法分析得到语法树后,就可以开始解释执行了. (1)词法分析是将字符流(char strea

JavaScript 之 预编译 作用域,作用域链

第一次写博客,本来是学习jQuery遇到闭包问题,发现并没有理解闭包,发现闭包牵扯的知识点太多.复习了一遍(发现自己该记住的全忘了)写在博客里,自己也是小白,希望大神们指点迷津,必将感激不尽. 我们知道JavaScript有两个特点:单线程,解释型语(翻译一行,解释一行).但其实翻译一行,解释一行是最后一部才这样做,在这之前会有一个语法分析:通篇扫描看有没有语法错误,但不执行,通篇扫描之后,会进行 预编译 然后 -->解释一行,执行一行.这就是我们所说的js运行三部曲:语法分析     预编译 

还原真实,javascript之预编译 / 预解析

今天在群里吹水时,有群友提出一个问题.我一看很简单,就立马给出了答案:因为存在变量提升,所以输出undefined.本以为无人反驳,可确招来口诛笔伐.作为写实派的我,一贯以来坚持真实是我的使命,岂能容忍这等虚头巴脑的言论攻击.遂以此文记之,本在还原真实.奈何文笔拙劣,恐表述不当,误人子弟.若有不当之处,还请众佬及时斧正,以正视听. 就是下面这段代码: var obj = { say: function () { console.log(obj) }() } // 输出 undefined 为什么

JS函数/预编译

一.函数: 1.函数声明: function test() {}; 2.函数表达式: var test=function () {}; 3.参数: function test(a,b) {        //a,b形参 //var a; //var b; var c=a+b; document.write(c); } test(1,2);       //1,2实参 4.实参列表: arguments[]; 二.预编译: 1.预编译: (1) 创建AO对象:(全局创建的为GO===window)

函数 预编译

var str = false + 1; console.log(str);// 1 var demo = false == 1; console.log(demo);// 0 if (typeof(a) && -true + (+undefined) + ''){ console.log('不错'); } if (11 + "11" * 2 ==33){ console.log('不错') } !!" " + !!"" -!!f

JavaScript作用域原理(二)——预编译

JavaScript是一种脚本语言, 它的执行过程, 是一种翻译执行的过程.并且JavaScript是有预编译过程的,在执行每一段脚本代码之前, 都会首先处理var关键字和function定义式(函数定义式和函数表达式). 一.变量执行之前,会被赋为undefined <p id="scope2" style="color:red"></p> function echo(p, html) { p.innerHTML += html + '&l

个人对JavaScript预编译的理解

什么是js的预编译 马上要找工作了,之前学习JS都是很基础的皮毛,作为当前最火热的语言,本人一定是要研究的,然而刚接触到预编译我就快疯了,对于一个脑子不好使的人来说真的太绕了,饶了好久也不知道有没有绕明白,所以先记载下来,以后发现有啥不对的再纠正. 首先,JS解释器在执行一段script脚本时,首先会进行预编译,将代码中声明的变量和函数进行处理,然后才会按代码顺序翻译执行,那么JS在预编译和执行阶段分别进行了些什么操作呢?网上有很多大神的帖子给了说明: 1. 在执行代码前会进行类似"预编译&qu

javascript运行过程中的“预编译阶段”和“执行阶段”

javascript相对于其它语言来说是一种弱类型的语言,在其它如java语言中,程序的执行需要有编译的阶段 而在javascript中也有类似的“预编译阶段”(javascript的预编译是以代码块为范围<script></script>,即每遇到一个代码块都会进行  预编译>执行), 首先科普下javascript中的两种声明方式,var和function,前者声明的是变量,后者声明的是方法 在预编译中,javascript对这两种声明做出了两种处理方案 <scri