先来做三个测试 eg1: var a; a = 1; function a() {}; console.log(a); eg2: var a; function a() {}; console.log(a); eg3: var a; function a() {}; a = 1; console.log(a); eg1:输出1 eg2:输出a方法 eg3:输出1 为什么输出结果是这样的? 先来看看js预编译实现过程: 1.js首先扫描var关键字,提前到顶端: 2.然后扫描functio…
我们都知道javascript是解释型语言,执行的特点呢是编译一行,执行一行.按照这个思路有时候我们在运行代码时会有一些令人费解的现象出现.下面我们一起来执行下面三段代码. <script> var a = 123; console.log(a); </script> <script> console.log(a); </script> <script> console.log(a); var a = 123; </script> 运…
预编译四部曲 1.创建AO对象 2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined 3.将实参和形参统一 4.在函数体里面找函数声明,值赋予函数体 function fn(a){ console.log(a) //function a(){} var a = 123; console.log(a)//123 function a(){} console.log(a)//123 var b = function(){} console.log(b) //function()…