讲解在代码中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>js预编译讲解</title>
</head>
<body>
<script type="text/javascript">
//预编译是发生在函数执行前的步骤,是真实存在的,但是我们是看不见的
//首先我们要知道预编译的4个步骤
//1、创建AO对象
//2、寻找函数的形参和变量声明,将变量和形参名作为AO对象的属性名,值为undefined
//3、将形参和实参统一,就是更改形参后的undefined为具体的形参值
//4、寻找函数中的函数声明,将函数名作为AO的属性名,值为函数体
//下面为是AO对象的最后结果
// AO{
// a : function(){},
// b : undefined,
// d : function(){}
// }
//得到AO对象后我们就一行一行的带入就是我们最后的结果了
function fun(){
console.log(a); //输出 函数
var a=123;
console.log(a); //输出123 ,因为a的值重新被赋值了
function a(){};
console.log(a); // 输出123 ,因为a的值还是123, function a(){}; 只是定义了一个名字叫a 的匿名函数,和a没有关系
var b = function(){};
console.log(b); //输出 函数,因为上边b被重新定义了
function d(){};
}
fun(1); //调用函数
</script>
</body>
</html>