<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> VO AO 对象 建立</title>
</head>
<body>
<script type="text/javascript">
// 全局预编译
console.log(a)
var a = 0
function a(){
console.log('dd')
}
a = 0
console.log(a)
/*
打印结果 funa 0
1.首先 VO预编译
a = 0 => a = fun
2.由上而下 执行代码
打印 fun a=0 打印0
*/
// 函数预编译
function cc(a,b){
console.log(a)
var a = 0;
console.log(a)
var b = function (){
console.log(1)
}
console.log(a)
console.log(b)
}
cc(1)
/*
AO (函数)预编译 1.找函数内的 定义的参数 2.找形参 3.实参 赋值给 形参 4. 找函数声明 =》 替换掉 原先的对象 =》 开始执行代码
1 0 undi fun
1.先进行 预编译
AO{
a => undifined,
b => undifinde
}
2.由上而下 执行代码
a => 1
console.log(1)
a => 0
console.log(0)
b => fun
...
*/
// 预编译面试题
function fun (a,c){
console.log(a)
var a = 123
console.log(a)
console.log(c)
function a(){}
if(false){
var d = 678
}
console.log(d)
console.log(b)
var b = function(){}
console.log(b)
function c (){}
console.log(c)
}
fun(1,2)
/*
1.预编译
VO{
a undefinde => 1 => funa
b undefinde // 函数 编译的时候 var b = fun 属于变量声明 所以 不影响 =>funb
d undefinde
c undefinde => 2 => func
}
funa 123 func undefinde undefinde funb func
*/
</script>
</body>
</html>