2021-09-26

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
上一篇:《javascript高级程序设计》学习笔记 | 11.3.异步函数


下一篇:从 json 说起