函数是封装了一段可被重复调用执行的代码块,通过此代码块可以实现大量代码的重复使用。
函数的声明
function 函数名(){
}
函数表达式:
使用function声明函数,但未指定函数名,将匿名函数赋予一个变量。
var fun = function() {
}
函数的调用:
函数表达式可直接在函数后加括号调用。
函数名();
声明函数本身是不会执行代码的,只有在调用函数时才会执行函数体代码。
函数的封装时根据需求实现的,讲不一样的提取出来当作参数。把一个或者多个功能通过函数的方式封装起来。
函数的参数
分为形参与实参
function 函数名( 形参1,形参2){
}
函数名(实参1,实参2);
在声明函数的小括号里的时形参(形式上的参数)。函数调用的小括号里的是实参(实际的参数)。
在函数调用的过程中是将函数的实参传递给形参。
函数的参数不限制,根据实际使用,多个参数之间使用逗号隔开。
//例子:一个求两数之间和的函数
//编写一个函数,计算两个数字的和差积商
var a1=prompt("输入第一个数");
var a2=prompt("输入第二个数");
var a3=prompt("输入你要的运算符");
a1=Number(a1);
a2=Number(a2);
function sum(a,b){
console.log(a+b);
}
sum(a1,a2);
如果形参与实参的个数不匹配的情况:
1实参的个数多于形参:
则只取到形参的个数,剩下的实参不参与。
2实参的个数小于形参:
形参可以看作一个没被声明的变量 ,所以一个变量没有接受值,结果变成undefined
此时实参2传递给形参a,形参b没有接受值,则变为undefined。
所以2+undefined=NaN。
3 实参等于形参的个数
则正常输出结果。
函数的返回值
function 函数名( 形参1){
return 需要返回的结果;
}
函数是实现某些功能,最终的结果需要返回给函数的调用者函数名()通过return实现的
只要函数遇到return就把后面的结果返回给函数的调用者。函数名()等于return的结果。
return只能返回一个值,如果用逗号隔开多个值以最后一个为准。
return是终止函数,后面的代码不会被执行。函数体中,只要执行到return,无论在什么词法环境中,程序结束
如果函数没有return,则返回undefined。
arguments的使用
当我们不确定有多少个参数传递的时候,可以用arguments来获取,在JavaScript中,arguments实际上是当前函数的一个内置对象,所有的函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参。
arguments相当于一个伪数组
当实参多于形参时,因为arguments对象中存储了传递的所有实参。
我们可以输出arguments的长度。
function sum(a,b){
console.log(arguments[4]);
console.log(arguments.length);
}
sum(2,3,4,5,6,7,8);
其中arguments相当于一个伪数组,所以arguments的下标时从0开始的, 我们给了实参sum(2,3,4,5,6,7,8);
arguments[0];
arguments[1];
arguments[2];
arguments[3];
arguments[4];
arguments[5];
arguments[6];
arguments[7];
可以以这种方式分别引用他们。
所以长度为7 下标时从0开始的,所以arguments[ 4 ]=6;
例题:我们可以遍历所有参数求和
function add() {
var sum =0,
len = arguments.length;
for(var i=0; i<len; i++){
sum += arguments[i];
}
return sum;
}
add()
add(1)
add(1,2,3,4);