1、命名函数
function abc(){ // abc是函数名
console.log("a");
}
var fn=abc; //把函数abc地址赋值传给fn
fn(); // 或者 abc(); => 执行函数
命名函数的特点:
1.有函数名,可以通过函数调用函数
2.声明提前,当执行到script 标签时,会预先将所有的命名函数存在堆中,并在栈中定义函数名引用该函数地址
2、匿名函数
1 //变量匿名函数
2 var fn=function(){
3
4 }
5
6 //对象方法定义
7 var obj={
8 fn:function(){
9
10 }
11 }
12
13 // 自执行函数 缺点:只能执行一次,无法再次调用,会造成内存泄漏
14 (function(){
15
16 })();
匿名函数特点
1.匿名函数没有名字
2.可以设置给一个变量,或者设置给一个对象的属性
3.命名函数可以在函数定义之前(同一个script内)和之后(script标签可以相同,可以不同)执行,但是匿名函数只能在函数定义后执行(不会声明提前)
4.自执行函数,只能执行一次,无法再次调用,会造成内存泄漏
3、构造函数定义
1 //构造函数
2 var fn=new Function("参数1","参数2",..."函数内容")
构造函数特点
1.构造函数中,前面的内容就是这个创建函数的所有参数,最后一个内容就是这个函数执行语句块
2.要求所有内容都必须是字符串
3.缺点:构造函数创建函数缺点是运行速度慢,效率低,因为需要将所有的字符串转换为代码
逆战203