今天开始说一下js创建函数的方法,函数其实是一个对象,是存在于变量当中的,可以作为函数的参数传递,也可以在函数中创建和函数中返回。
函数名命名规则和变量命名规则一样,都是驼峰式命名,见名思意,函数名表达函数执行的作用当执行到当前script标签时,预先将当前script标签中所有的命名函数先存储在堆中,并且在栈中给他定义函数名引用该函数地址script标签中的函数一旦创建成功,面的所有script标签中都可以使用该函数,但是再当前script标签前的script标签不能使用 所以最好把装有函数的script写在最前面
回调函数: 函数分为三种形式:
1、命名函数定义
function abc(){
console.log("a");
}
var fn=abc; //把函数abc地址赋值传给fn
fn(); // 或者 abc(); => 执行函数
// abc是函数名
2、匿名函数定义 // 匿名函数没有名字 // 可以设置给一个变量,或者设置给一个对象的属性 // 命名函数可以在函数定义之前(同一个script内)和之后(script标签可以相同,可以不同)执行,但是匿名函数只能在函数定义后执行 变量匿名函数
var fn=function(){
}
对象方法定义
var obj={
fn:function(){
}
}
自执行函数 // 缺点:只能执行一次,无法再次调用,会造成内存泄漏
(function(){
})();
3、构造函数定义
var fn=new Function("参数1","参数2",..."函数内容")
// 构造函数中,前面的内容就是这个创建函数的所有参数,最后一个内容就是这个函数执行语句块
// 要求所有内容都必须是字符串
// 缺点:构造函数创建函数缺点是运行速度慢,效率低,因为需要将所有的字符串转换为代码