demon1
function test(){
console.log(b); //undefined
if(a){
var b = 100;
}
console.log(b) ////undefined
c = 234;
console.log(c) //234
}
var a;
test();
a = 10;
console.log(c) //234
// 分析
// VO = {
// a: undefined, //10
// test: fun,
// c: 234
// }
// AO = {
// b: undefined
// }
demon2
var a = 1;
function b() {
console.log(a); //fun(a)
a = 10;
return;
function a() { }
}
b()
console.log(a) // 1
VO = {
a: undefined, // 1
b: function () { }
}
AO = {
a: function(){}, //10
}
demon3
console.log(foo); //function("C")
var foo = "A";
console.log(foo); //A
var foo = function(){
console.log('B'); //B
}
console.log(foo); //function("B")
foo(); //B
function foo(){
console.log("C")
}
console.log(foo); //function("B")
foo(); //B
VO = {
foo: undefined, //function("C") // A //function("B")
}
demon4
var foo = 1;
function bar(a){
var a1 = a;
var a = foo;
function a(){
console.log(a)
}
a1()
}
bar(3)
VO = {
foo: undefined, //1
bar: function(){}
}
AO = {
arguments: {
a: 3,
length: 1
},
a1: undefined, //function(){}
a: undefined, //3 //function(){} //1
}