函数
函数的概念
函数就是封装一段可以被重复执行调用的代码块,目的就是让大量代码重复使用
函数的使用
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(){
}
变量名()