JS小白学习笔记(day_2)
一、函数变量的声明
函数声明:总体提升
变量声明,声明提升
tip:
一切window属性全部是全局变量(window就是全局的域)。
预编译
1.生成AO对象,找形参和变量声明,作为AO变量的属性名,统一值为undefined
2.形参和实参相统一(把形参的数放到ao对象中)
3.把函数声明的名也挂到属性那
4.第四步执行赋值
function test(a,b){
console.log(a);
c=0;
var c;
a=3;
b=2;
console.log(b);
function b(){}
function d(){}
console.log(b);
}
test(1);
第一步:
AO{
a:undefined;
b:undefined;
c:undefined;
}//两个形参 a:undefined b:undefined 一个变量声明 c:undefined
第二步:
a:1;
b:undefined;
c:undefined;
第三步:
a:1;
b:function b(){}
c:undefined;
d:function d(){}
第四步:
结果:a=1 b=2 b=2
例题1
question_2
function text(a,b){
console.log(a);
console.log(b);
var b=234;
console.log(b);
a=123;
console.log(a);
function a(){}
var a;
b=234;
var b =function(){}
console.log(a);
console.log(b);
}
text(1)
第一步
AO{
a:undefined;
b:undefined;
}
第二步
a:1;
b:undefined;
第三步
a:function a(){} a=123
b:undefined; b=234 b=function(){}
第四步
function a(){}
undefined
234
123
123
function(){}
例题2
function test(){
console.log(b);
if(a){
var b=100;
}
c= 234;
console.log(c);
}
var a;
test();
a=10;
console.log(c);
分析:
GO{
a:10
c:234
}
AO{
a:10;
b:undefined;
}
result:
undefined;
234
234;
练一练
例题3:
function bar(){
return foo;
foo = 10;
function foo(){
}
var foo =11;
}
console.log((bar));
ao{
foo:function foo(){
}
}
result:function foo(){
}
例题4:
console.log(bar());
function bar(){
foo =10;
function foo(){
}
var foo=11;
return foo;
}
}
结果:foo=11