参考网址:http://www.codesec.net/view/178491.html 先简单理解下作用域的概念,方便对变量与函数提升的概念的理解 function foo() { var x = 1; if (x) { var x = 2; } console.log(x); } foo(); 结果为2,可见js中并没有块级作用域的概念可以使用下面的方法创造自己的作用域,这样不会干扰到外部变量 function foo() { var x = 1; if (x) { (function()…
function fn(a){ console.log(a); var a = 123; function a(){} console.log(a); var b = function(){} console.log(b); function d(){} } fn(1); 预编译四部曲 1.创建AO对象 2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined 3.将实参和形参相统一 4.在函数体里面找函数声明,把函数声明的名作为AO属性名,值赋予函数体…