概念:封装可被重复调用执行的代码块。避免代码重复书写。
函数声明:函数名通常为动词
//声明函数
function 函数名(){
代码块
}
函数调用:
函数名();
函数封装:把一个或者多个功能通过函数封装起来,只提供接口给外部访问。比如:手机充电接口,并不用知道内部是怎么操作的,只知道把充电器连接到接口上可以实现充电的功能。
函数的形参与实参
函数可以有形参也可以没有形参,多个参数用逗号隔开
function sum(num1,num2) {
console.log(num1 + num2);
}
sum(100,200); //输出正确结果
sum(100,200,500,700); //实参个数大于形参,只取到形参个数
sum(200); //实参个数小于形参,多的形参定义为undefined
函数返回值
1.return可以终止函数执行,return后面的代码不再执行;
2.return只可以返回一个值,用逗号隔开写多个值,只返回最后一个值;如要返回多个值,可以返回一个数组。
3.函数如果有return返回reurn后的值,若没有返回undefined。
arguments
所有函数中都内置一个arguments对象,用来存储传递的实参。
arguments是一个伪数组:具有length属性;按照索引方式存储;没有数组的pop(),push()等方法。
// 函数求数组最大值
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,23,45,67));
console.log(getMax(1,2,6,5,9,7));
// 函数翻转数组
function Reserve(arr) {
var newarr = [];
for(var i = 0; i <= arr.length - 1; i++){
newarr[arr.length - 1 - i] = arr[i];
}
return newarr;
}
console.log(Reserve(['red','green','blue','pink','black','orange']));
// 封装冒泡
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+1] < arr[j]){
var temp;
temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
console.log(sort([2,3,0,1,77,33,44,23,38,89]));
// 判断闰年
function isRYear() {
var year = prompt('输入年份');
var flag = false;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
flag = true;
}
return flag;
}
console.log(isRYear());
函数可以调用另外一个函数
// 判断输入年份2月的天数
function isRYear(year) {
var flag = false;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
flag = true;
}
return flag;
}
function GetDay() {
var year = prompt('输入年份');
if(isRYear(year)) {
alert('2月有29天');
}
else{
alert('2月有28天');
}
}
GetDay();
声明函数的方式:
1.利用函数关键字自定义函数(命名函数)
function fn() {
}
fn();
2.函数表达式(匿名函数)
var 变量名 = function() {
console.log('我是函数表达式');
}
变量名();