1、命名函数定义

function abc(){ console.log("a"); }

2、匿名函数定义

匿名函数没有名字,可以设置给一个变量,或者设置给一个对象的属性

命名函数可以在函数定义之前和之后执行,但是匿名函数只能在函数定义后执行

设置给一个变量

var fn=function(){ console.log("b"); }

设置给一个对象的属性

var obj={ a:1, b:2, c:function(){ console.log("ccc"); } }

自执行匿名函数

缺点:只能执行一次,无法再次调用

(function(){ console.log("aa"); })();

3、构造函数创建

构造函数中,前面的内容就是这个创建函数的所有参数,最后一个内容就是这个函数执行语句块

要求所有内容都必须是字符串

缺点,构造函数创建函数缺点是运行速度慢,效率低,因为需要将所有的字符串转换为代码

var fn=new Function("a","b","console.log(a+b)");

关于函数

1、在这里script标签中的函数一旦创建成功,后面的所有script标签中都可以使用该函数

2、当执行到当前script标签时,预先将当前script标签中所有的命名函数先存储在堆中,并且在栈中给他定义函数名引用该函数地址

3、函数也是对象