# JavaScript 函数

JavaScript 函数

函数概念

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

函数的使用

函数的使用

分两步:声明函数和调用函数

//1.声明函数
//function 函数名() {
	//函数体
//}
function sayHi(){
	console.log('hi~~');
}
//function 声明函数的关键字 全部小写
//函数是做某件事情,函数名一般是动词 sayHi

//2.调用函数
sayHi();
//调用函数的时候千万不要忘记加小括号
//函数不调用,自己不执行

函数的封装

函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口

函数的参数

形参和实参

//function 函数名(形参1,形参2){// 在声明函数的小括号里面是 形参 (形式上的参数)
	
//}
//函数名(实参1,实参2);// 在函数调用的小括号里面是实参(实际的函数)

function cook(aru){// 形参是接受实参的 aru = '西红柿炒鸡蛋' 形参类似于一个变量
	console.log(aru);
}
cook('西红柿炒鸡蛋');
cook('小鸡炖蘑菇');
//函数的参数可以有,也可以没有,个数不限

形参和实参个数不匹配问题


## 函数的返回值

1.return返回值

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

		function getMax(num1, num2){
            if(num1 > num2){
                return num1;
            }else{
                return num2;
            }
        }
        console.log(getMax(9, 2));

2.return终止函数

function getSum(num1, num2) {
	return num1 + num2;// return 后面的代码不会被执行
	alert('我是不会被执行的哦!');
}
consolse.log(getSum(1,2));

3.return只能返回一个值

function fn(num1, num2){
	return num1, num2;// 返回的结果是最后一个值
}
console.log(fn(1,2));

4.想要返回多个值时,可以返回成数组

//求任意两个数加减乘除结果
function getResult(num1, num2){
	return[num1 + num2, num1 - num2, num1 * num2, num1 / num2 ];
}
var re = getResult(1,2);//返回的是一个数组
console.log(re);

5.函数如果有return则返回return后面的值,没有则返回undefined

function fun1(){
	return 666;
}
console.log(fun1());// 返回666

function fun2 (){
	
}
console.log(fun2());//函数返回结果是undefined

arguments的使用

当不确定有多少个参数传递的时候,可以用arguments来获取。在JavaScript中,arguments实际上它是当前函数的一个内置对象。所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参。
arguments的使用:只有函数才有arguments对象,而且每个函数都内置好了这个arguments
arguments展示形式是一个伪数组,因此可以进行遍历。伪数组特点:

  • 具有length属性
  • 按索引方式存储数据
  • 不具有数组的push,pop等方法
function fn(){
	console.log(arguments);
}
fn(1,2,3);
//利用函数求任意个数的值
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,2,3));
console.log(getMax(11,222,34,999));
console.log(getMax(100,79,34,563,12,87));
//3
//999
///563

函数间的调用

//函数是可以相互调用的
function fn1(){
	console.log(11);
	fn2;// 在fn1 函数里面调用了fn2 函数
}
fn1();

function fn2(){
	console.log(22);
}
// 11  22
//用户输入年份,输出当前年份2月份的天数
function backDay(){
	var year = prompt('请输入年份:');
	if(isRunYear(year)){//调用函数需要加小括号
		alert('当前年份是闰年2月份有29天');
	}else{
		alert('当前年份是平年2月份有28天');
	}
}
backDay(2000);

//利用函数判断闰年
function isRunYear(nianfen){
//如果是闰年我们返回true,否则返回 false
	var flag = false;
	if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
		flag = true;
	}
	return flag;
}

函数的两种声明方式

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

function fn(){

}
fn();

2.函数表达式(匿名函数)

//var 变量名 = function(){};
var fun = funcction(aru){
	console.log('我是函数表达式');
	console.log(aru;)
}
fun('你好啊');
//1.fun是变量名,不是函数名
//2.函数表达式声明方式跟声明变量差不多,只不过变量里面存的是值,而函数表达式里面存的是函数
//3.函数表达式也可以进行传递参数