function fn (a, c) {
console.log(a)
var a = 123
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)
}
上述代码的输出应为:
创建作用域的过程
1.创建ao对象 AO{}
2.找形参和变量声明将变量和形参名当做AO对象的属性名,值为undefined
3.实参形参相统一
4.在函数体里面找函数声明,值赋予函数体
AO: {
a: undefined, 1 => function a () {}
c: undefined, 2 => function c () {}
d: undefined,
b: undefined
}