函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
以下总结三种定义函数:常规函数 匿名函数 自执行函数
1. 常规函数
注:和变量一样,常规函数也会声明提前 。
1)无参无返回值类型
//为了验证常规函数的声明提前,将方法的执行放在前面
test();
function test(){
console.log("test");
}
2)带返回值类型
//用console.log调试函数返回的结果
console.log(test_1());
function test_1(){
return("这是返回结果");
}
注意:函数中没有输出的语句时,需要使用console.log(函数).
3)带参类型(形参 实参)
test_3(1,2);
function test_3(a,b){
console.log(a);
}
如果,不设置实参,调试结果就会显示如下:
4)有实参无形参类型
arguments 对象的作用:
- 包含了函数调用的参数数组。
- 引用着函数的实参,可以用数组下标的方式"[]"引用arguments的元素。
- arguments.length为函数实参个数
test_4(1,2,3);
function test_4(){
console.log(arguments[0]);
console.log(arguments[1]);
console.log(arguments[2]);
console.log(arguments.length);
}
2. 匿名函数
即不带名称的函数:把函数赋值给一个变量,执行语句。
- 匿名函数和常规函数一样,具有是否带参,有实参无形参类型,是否带返回值函数类型。此处只列举不同之处。
1)无参无返回值类型
var test_5=function(){
console.log("我又出现啦");
}
test_5();
//在函数中,()代表着执行的含义。
//test_5是声明的变量,同时也是函数赋值得到的。
//要执行函数的结果,就执行语句test_5()
2)带参类型
var test_5=function(a,b){
console.log(a,b);
}
test_5(1,2);
//注意书写方式
前面我们提到,常规函数具有声明提前.(仅仅它有)
- 匿名函数不能声明提前。因为它赋值给一个变量。而变量是可以声明提前的。所以相当于变量是一个未定义的值,和函数无联系。
3. 自执行函数
指自动执行的函数,本身也属于匿名函数,所以这类函数不具有声明提前。类似的,作为匿名函数,它具有是否带参,有实参无形参类型,是否带返回值函数类型。仅在此显示有区别的地方。
1)一般格式:(无参无返回值)
(function(){
console.log(1);
})();
2)含参类型
(function(a,b){
console.log(a,b);
})(1,2);
//区分不同类型函数带参的区别
- 自执行函数为什么是这样写的?
- 我们知道在常规函数中,function是作为关键字,由function+函数名构成的完整函数才能执行。而自执行函数先以匿名函数的形式书写,将整体用()包起来成为一个表达式,不会被函数声明。
- 在函数整体之后加()执行函数。
- 自执行函数经常以代码块的方式使用。