含义
函数就是封装了一段可以被重复使用的代码段
声明/调用函数
- 利用函数关键字自定义函数(命名函数)
function fn(){}–声明
fn();–调用 - 函数表达式(匿名函数)
var 变量名 = function(){};–声明
变量名();–调用
arguments的使用
存储函数所有的实参
注:只有函数才有arguments对象,每个函数都内置好了arguments
伪数组
- 具有数组的length属性
- 按照索引的方式进行存储
- 没有真正数组的一些方法,pop() push()等
使用
function getSUm(num1, num2) {
console.log(num1 + num2);
}
//函数形参实参个数匹配
getSUm(1, 2);
//实参个数多于形参个数,匹配完形参个数
getSUm(1, 2, 3);
//实参个数小于形参个数,形参是不用声明的变量,没有接收值,结果就是undefined
getSUm(1);
//利用函数求任意个数的最大值
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(3, 1, 2, 5, 43, 5312, 5));
console.log(getMax(3, 1, 23222, 54, 43, 5312, 5));
console.log(getMax(3, 1, 2, 5222, 53343, 5312, 5));
函数封装
- 利用函数封装方式,翻转任意一个数组
- 利用函数封装方式,对数组进行冒泡排序
- 利用函数封装方式,判断是否为闰年
- 用户输入年份,输出当前年份2月份的天数
//案例1:利用函数封装方式,翻转任意一个数组
function reverse(arr) {
if (arr instanceof Array) {
var newArr = [];
for (var i = arr.length - 1; i >= 0; i--) {
newArr[newArr.length] = arr[i];
}
return newArr;
} else return false;
}
console.log(reverse([1, 2, 3, 4, 5, 6]));
//案例2:利用函数封装方式,对数组进行冒泡排序
function bubbleSort(arr) {
var newArr = [];
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - i - 1; j++) {
var temp = arr[0];
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
console.log(bubbleSort([5, 4, 3, 2, 1]));
//案例3:利用函数封装方式,判断是否为闰年
function isLeapYear(year) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) return true;
else return false;
}
console.log(isLeapYear(2009));
console.log(isLeapYear(2008));
//案例4:用户输入年份,输出当前年份2月份的天数
function dayOfFebruary(year) {
var flag = isLeapYear(year);
if (flag == true) return 29;
else return 28;
}
console.log(dayOfFebruary(2008));
console.log(dayOfFebruary(2021));