函数
函数就是封装了一段可以被重复执行调用的代码块,目的:就是让大量代码重复使用。
函数的使用
函数在使用时分为两步:声明函数和调用函数。
1.声明函数
function 函数名(){
//函数体
}
注意:①function声明函数的关键字,全部小写
②函数是做某件事情,函数名一般是动词
③函数不调用自己不执行
2.调用函数
函数名();
注意:调用的时候不要忘记添加小括号
函数的封装
函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口。
案例1.利用函数计算1-100之间的累加和 (这个代码就已经用到了实参和形参)
function getSum(){
var sum = 0;
for(var i = 1 ;i <= 100; i++){
sum+=i;
}
console.log(sum);
}
getSum();
函数的参数
形参:在声明函数的小括号里面(形式上的参数)
实参:在函数调用的小括号里面(实际的参数)
注意 :形参可以看作是不用声明的变量。
案例2:利用函数求任意两个数的和
function getSum(num1,num2){
var sum = 0 ;
sum = num1 +num2;
console.log(sum);
}
getSum(4,5);
getSum(20,50);
案例3:利用函数求任意两个数之间的和
function getSum(num1,num2){
sum = 0;
for(var i = num1 ; i <= num2 ; i++){
sum+=i;
}
console.log(sum);
}
getSum(2,5);
getSum(1,100);
实参和形参参的个数匹配:
形参 2个;实参1个 则第二个值就是undefined;实参2个 正常输出;实参3个,只取前两个。
函数的返回值
return语句:实现函数将值返回给调用者
函数返回值格式:
function 函数名(){
return 需要返回的结果;
}
函数名();
1.函数只是实现某种功能,最终的结果需要返回给函数的调用者 函数名() 通过return实现的.
2.只要函数遇到return 就把后面的结果返回给函数的调用者 函数名() = return 后面的结果
案例4:利用函数求任意两个数之间的和 (return)
function getSum(num1,num2){
sum = 0;
for(var i = num1 ; i <= num2 ; i++){
sum+=i;
}
return sum;
}
console.log( getSum(2,5));
console.log( getSum(1,100));
案例5:利用函数求任意两个数的最大值
function getMax(num1,num2){
if(num1>num2)
return num1;
else
return num2;
//return num1 > num2 ? num1 : num2; 三元运算符
}
console.log(getMax(88,5));
案例6:利用函数求任意一个数组中的最大值
function getMax(arr){
var max = arr[0] ;
for(var i = 1 ; i <= arr.length;i++ ){
if(arr[i]>max){
max = arr[i]
}
}
return max;
}
console.log(getMax([5,2,99,101,67,77]));
//var re = getMax([5,2,99,101,67,77]);
//console.log(re);
① return 终止函数 即return语句之后的代码不被执行
② return 返回值 即return只能返回一个值.如果用逗号隔开多个值,以最后一个为准.
③ 函数没有return 返回 undefined
break,continue,return的区别
break | 结束当前的循环(如for,while) |
continue | 跳出本次循环,继续执行下次循环(如for,while) |
return | 不仅可以退出循环,还能返回return语句中的值,同时还可以结束当前的函数体内的代码 |
arguments的使用
当我们不确定有多少个参数传递的时候,可以用arguments来获取.arguments存储了传递的所有实参.
arguments展示形式是一个伪数组,因此可以遍历,伪数组具有一下特点:
1.具有length属性
2.按索引方式储存数据
3.不具有数组的piush,pop等方法.
案例7:利用函数求任意个数的最大值
function getMax(){
var max = arguments[0];
for ( var i = 1; i<= arguments.length ;i++){
if(arguments[i]>max)
max = arguments[i];
}
return max;
}
console.log(getMax(1,5,8));
console.log(getMax(5,2,99,101,67,77));
案例8:利用函数封装方式,旋转任意一个数组
function getTurn(){
var arr = [];
for(var i = arguments.length -1 ; i>= 0 ; i--){
arr[arr.length] = arguments[i];
}
return arr;
}
console.log(getTurn(1,5,8));
案例9:利用函数封装,对数组排序
function getNew(arr){
var m;
for( var i = 0 ; i < arr.length -1; i++){
for(var j = 0; j< arr.length-i-1 ; j++){
if(arr[j]>arr[j+1]){
m = arr[j];
arr[j] = arr[j+1];
arr[j+1] = m ;
}
}
}
return arr;
}
console.log(getNew([5,3,8,0,1]));
案例10:输入一个年份,判断是否是闰年 (能被4整除并且不能被100整除,或者能被400整除)
function runYear(year){
if(year % 4 == 0 && year %100 !=0 || year % 400 == 0)
return (year +'是闰年');
else
return (year +'不是闰年');
}
console.log(runYear(2008));
案例11 :用户输入年份,输出当前年份2月份的天数(函数调用函数)
function shuRu(){
var year = prompt('请输入年份:');
if(runYear(year))
alert('今年是闰年,2月份29天');
else
alert('今年不是闰年,2月份28天');
}
shuRu();
function runYear(year){
var flag = false;
if(year % 4 == 0 && year %100 !=0 || year % 400 == 0)
flag = true;
return flag;
}
函数的声明方式2:函数表达式
var 变量名 = function(){
//函数体
}
1.fun 是变量名 不是函数名
2.函数表达式声明方式跟声明变量差不多.变量存的是值,函数表达式存的是函数
3.函数表达式也可以进行传递参数.