预解析
在每个作用域代码执行前都有一个阶段称为预解析(提前分析代码)
1 找到当前作用域中的var(变量声明语句),将变量声明语句提升到当前作用域顶端,赋值语句保留在原地
2 2、 找到当前作用域中的function(函数声明语句),将函数体整体提升到当前作用域顶端,调用不提升
3 变量提升和函数提升没有先后顺序
注意:变量和函数重名
如果变量有值,取得是变量值,如果变量没有值,取得是函数值。
函数的数据类型
函数其实也是一种数据类型,类型名叫做"function";
使用typeof可以获取函数的类型
函数作为一个基本值
1 可以直接使用
2 可以保存在变量中使用:函数表达式 var fun=function(){}
3 可以作为函数的参数----回调函数
回调函数
由于函数也是一个值,可以进行参数传递。
当我们的函数功能中某一个部分的功能不确定,但是大体确定了,我们可以在调用时,根据需求传入函数,参与代码执行。
例: function test(n,fn){
//参数的传递就是一个复制的过程
n=100;
fu=function(){}
fu()
}
如若传递的是匿名函数,这个匿名函数就是一个函数体
例: test(100,function(){})
构造函数
1 构造函数的作用:创建对象实例的函数
2 构造函数的首字母需要大写
3 做的事情:给新创建的对象添加属性和方法
3 调用是加new
注意:new的第二个作用是将构造函数内的this指向创建出来的对象
入口函数
window.onload=function(){
这个函数内的代码在页面完全加载后(页面结构,文件,图片)执行。
}