一、函数概述
1、概述
函数的作用就是封装一段代码,将来可以重复使用。
在JavaScript中,函数也作为一种数据类型存在,而且是引用数据类型,函数名就是指向其内存空间地址的引用。
Demo:
1 var a = function() {
2 return 2;
3 };
4 var b = a;
5 a.fname = "tom";
6 alert(b.fname); //结果为tom
二、使用函数
1、函数的定义
a、函数声明
语法格式:
function 函数名(){
// 函数体
}
b、函数表达式(匿名函数)
语法格式:
var fn = function() {
// 函数体
}
注意:
-
-
- 只定义函数并不会执行,只有当函数被调用才会执行;
- 函数命名使用 动词+名词 的格式,表示做一件事情。
- 在 Java 中函数(方法)允许重载,但是在 JS 中函数的重载会直接覆盖掉上一次的定义,即不允许重载。
- 只定义函数并不会执行,只有当函数被调用才会执行;
-
2、函数的调用
语法格式:
函数名(实际参数列表);
注意:函数体只有在调用的时候才会执行,可以调用多次,重复使用,调用JavaScript函数时系统不检查传入参数的个数和类型
3、函数的参数
函数内部是一个封闭的环境,可以通过参数的方式,把外部的值传递给函数内部。
带参数的函数声明 语法格式:
function 函数名(形参1, 形参2, 形参...){
// 函数体
}
带参数的函数调用 语法格式:
函数名(实参1, 实参2, 实参3);
a、形参与实参
形式参数:在声明一个函数的时候,为了函数的功能更加灵活,有些值是固定不了的,对于这些固定不了的值。我们可以给函数设置参数。这个参数没有具体的值,仅仅起到一个占位置的作用,我们通常称之为形式参数,也叫形参。
实际参数:如果函数在声明时,设置了形参,那么在函数调用的时候就需要传入对应的参数,我们把传入的参数叫做实际参数,也叫实参。
b、
扩展:当传入的参数为基本数据类型时,在函数内部改变形参的值,并不会影响外部实参的值。
4、函数的返回值
当函数执行完成后,期望函数给一些反馈进行后续的运算,这个时候就需要函数的返回值。
a、返回值语法
//声明一个带返回值的函数
function 函数名(形参1, 形参2, 形参...){
//函数体
return 返回值;
}
//可以通过变量来接收这个返回值
var 变量 = 函数名(实参1, 实参2, 实参3);
b、注意事项
-
-
- 如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined
- 如果函数使用 return语句,那么跟再return后面的值,就成了函数的返回值
- 如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值也是:undefined
- 数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退出,也就是说return后面的所有其他代码都不会再执行。
- 如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined
-
三、函数的 arguments 隐形参数
JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。也就是说所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有的实参。arguments是一个伪数组(类似于Java中的可变长参数),因此及可以进行遍历。
Demo:
1 // 求任意个数的和
2 function getSum() {
3 var sum = 0;
4 for (var i = 0; i < arguments.length; i++) {
5 sum += arguments[i];
6 }
7 return sum;
8 }
9
10 var sum = getSum(5, 1, 3, 4);
11 console.log(sum);
总结:
(1)方法定义是,形参的类型不用写,返回值类型也不写。
(2)方法是一个对象,如果定义名称相同的方法,会覆盖
(3)在JS中,方法的调用只与方法的名称有关,和参数列表无关
(4)在方法声明中有一个隐藏的内置对象(数组),arguments,封装所有的实际参数