JS-函数

38 阅读3分钟

函数

函数的概念

函数就是封装一段可以被重复执行调用的代码块,目的就是让大量代码重复使用

函数的使用

1.声明函数

function 函数名(){ 函数体 }

(1)function声明函数的关键字,全部小写

(2)函数是做某件事情,函数名一般是动词

(3)函数不调用自己不执行

2.调用函数

函数名()

调用函数的时候千万不要忘记加()

案例:利用函数计算1-100之间的累加和
function getSum(){
 var sum=0
 for(i=1;i<=100;i++){
    sum+=i
 }
 console.log(sum)
}
<!-- 调用函数 -->
getSum()

函数的参数

参数的作用:可以利用函数的参数实现函数重复不同的代码

形参是接收实参的,形参类似一个变量

函数的参数可以有,可以没有

形参实参

function 函数名(形参1,形参2..){

}

函数名(实参1,实参2)---->这是调用函数

形参是接收实参的,形参类似一个变量

//   案例利用函数求任意两个数的和
function getSum(a,b){
console.log(a+b)
}
getSum(1,3)
//   案例利用函数求任意两个数之间数字和
function getSums(start,end){
 var sum=0
 for(i=1,1<=100;i++){
    sum+=i
 }
 console.log(sum)
}
getSums(1,100)

形参实参匹配问题

1.如果实参的个数和形参的格式一致,正常输出结果

2.如果实参的个数多于形参的个数,会取形参的个数

3.如果实参的个数小于形参的个数,多余的形参定义为undefined,最终结果就是NaN

函数的返回值:return语句

function 函数名(){ return需要返回的结果 }

函数名()

(1)我们函数只是实现某种功能,最终的结果需要返回给函数的调用者函数名(),通过return实现的

(2)只要函数遇到return,就把后面的结果,返回给函数的调用者函数名()=return后面的结果

(3)函数返回注意事项:

(3.1)return是终止函数,return后面的代码不被执行

(3.2)return只能返回一个值

(3.3)我们求任意两个数的加减乘除结果返回的是一个数组

(3.4)我们的函数如果没有return则返回的是return后面的值,如果函数没有return则返回的是undefined

// 案例1:求任意两个数的和
function getSum(num1,num2){
  return num1+num2
}
console.log(getSum(1,2))/* 结果3 */
// 案例2:利用函数求任意两个数的最大值
function getMax(num1,num2){
   if(num1>num2){return num1}
   else{return num2}
}
console.log(getMax(1,4))
// 案例3:利用函数求任意一个数组中的最大值
function getArrMax(arr){
   var max=arr[0]
   for(i=1;i<arr.length;i++){
      if(arr[i]>max){
         max=arr[i]
      }
      return max
   }
}
 var eg=getArrMax([5,2,99,101,76,77])
 console.log(eg)

break,continue,return的区别

break:结束当前的循环体(比如佛如.while)

continue:跳出本次循环,继续执行下次循环(比如for,while)

return:不仅可以退出循环,还能够返回return语句中的值,同时还可以结束当前的函数体内的代码

arguments的使用

当我们不确定有多少个参数传递的时候,可以用arguments来获取,在JS中,arguments实际上,它是当前函数的一个内置对象,所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参

1.使用

我们可以按照数组的方式遍历arguments

for(var i=0;i<arguments.length;i++){
   console.log(arguments[i])
}
}
fn(1,2,3,4,5)

2.arguments展示形式是一个伪数组特点如下:

2.1具有length属性

2.2按索引方式储存数据

2.3不具有数组的push和pop等方法

//  案例:利用函数求任意个数的最大值
function getMax(){
  var max=arguments[0]
  for(var i=0;i<arguments.length;i++){if(arguments[i]>max){
     max=arguments[i]
  }
  }
  return max
}
console.log(getMax[1,2,3])
console.log(getMax[1,2,3,4,5,6])
console.log(getMax[1,2,3,12,33,44,55])

函数的案例

案例1:利用函数封装方式,翻转任意一个数组

function reverse(arr){
  var newArr=[]
  for(var i=arr.length-1,i>=0;i--){
     newArr[newArr.length]=arr[i]
  }
  return newArr
}
var arr1=reverse[1,2,3,4,5]
console.log(arr1)

案例2:利用函数封装方式,对数组排序-冒泡排序

function sort(arr){
 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]){
          var temp=arr[j]
          arr[j]=arr[j+1]
          arr[j+1]=temp
       }
    }
 }
 return=arr
}
var arr1=sort([1,4,2,9])

案例3:利用函数封装方式,判断闰年平年

function isRunYear(year){
 var flag=false
 if(year%4==0&&year%100!=0||year%400==0){
    flag= true
 }
 return flag
}
console.log(isRunYear(2012))

案例4:用户输入年份,输出当前年份2月的天数

function backDay(){
 var year=prompt('请输入年份')
 if(isRunYear(year)){
    alert('当前年份是闰年,2月有29天')}
 else{
    alert('当前年份是平年,2月有28天')}
}
backDay()
function isRunYear(year){
 var flag=false
 if(year%4==0&&year%100!=0||year%400==0){
    flag= true
 }
 return flag
}

函数的两种声明方式

1.利用函数关键字自定义函数(命名函数)

function fn(){

}

fn()

2.函数表达式

var 变量名=function(){

}

变量名()