函数
函数就是封装了一段可以被重复执行调用的代码块
目的:让大量代码重复使用,减少页面中的冗余代码(低耦合高内聚)
// 1. 声明函数
function 函数名() {
// 函数体
}
// (1) 声明函数的关键字 全部小写
// (2) 函数是做某件事,函数名一般是动词
// (3) 函数不调用自己不执行
// 2. 调用函数
函数名();
// 调用函数的时候不能忘记小括号
函数的封装
函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口
// 两个数字中间的所有数字求和
function getSum(n,m) {
var sum = 0;
for(var i = 0; i <= m; i++) {
sum += i;
}
console.log(sum);
}
getSum(1,100);
getSum(10,50);
形参实参
形参:形式上的参数,函数定义的时候传递的参数,当前并不知道是什么(形参默认值是undefined)
实参:实际的参数,函数调用的时候传递的参数,实参是传递给形参的
参数的作用:在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去
function 函数名(形参1,形参2...) {// 在声明函数的小括号里面是形参(形式上的参数)形参是接受实参的,类似于一个变量
}
函数名(实参1,实参2...); // 在函数调用的小括号里面是实参(实际的参数)
// 函数的参数可以有,也可以没有,个数不限
// 利用函数求任意两个数的和
function getSum(num1, num2) {
console.log(num1 + num2);
};
// getSum(num1, num2);
getSum(50,20);
// 如果实参个数等于形参个数 => 输出正确结果
// 如果实参个数多于形参个数 => 只取到形参的个数
// 如果实参个数少于形参个数 => 多出来的形参定义为undefined,结果为NaN
函数的返回值 return
// 函数值的返回值格式
function 函数名() {
return 需要返回的结果;
}
函数名();
// 函数为了实现某种功能,最终的结果需要返回给函数的调用者使用 函数名() 通过return实现的
// 只要函数遇到return,就把后面的结果返回给函数的调用者 函数名() = return后面的结果
=================
利用函数求两个数的最大值
function getMax(num1,num2) {
return num1 > num2 ? num1 : num2;
}
console.log(getMax(3,7));
=================
利用函数求数组中的最大值
function getArrayMax(arr) {
var max = arr[0];
for(var i = 1;i < arr.length; i++){
if(arr[i] > max){
max = arr[i];
}
}
return max;
}
// 在实际项目中,我们经常用一个变量来接受函数的返回结果
var re = getArrayMax([1,5,7,57,95,21]);
console.log(re);
return 终止函数:return后面的代码不会被执行
return 只能返回一个值,如果返回了多个值,以最后一个值为准
=============
求任意两个数的加减乘除结果
function getResult(num1, num2) {
return [num1 + num2, num1 - num2, num1 * num2, num1 / num2];
}
var re = getResult(5, 7);
console.log(re);
函数之间的相互调用
function fn1() {
console.log(111);
fn2();
console.log('fn1');
}
function fn2(){
console.log(222);
console.log('fn2');
}
fn1();
// => 111 222 'fn2' 'fn1'
==================================
案例:判断用户输入的年份的2月有多少天
// 用户输入年份,输出当前年份二月份的天数
function backDay() {
let year = prompt('请您输入要查询的年份');
if(isRunYear(year)){ // 调用函数需要加小括号(让函数执行)
alert('当前年份是闰年,2月份有29天');
}else{
alert('当前年份是平年,2月份有28天');
};
}
backDay();
// 判断是否是闰年
function isRunYear(year) {
// 是闰年返回true,不是闰年返回false
let flag = false;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
flag = true;
}
return flag;
}
arguments
当我们不确定有多少个参数传递的时候,可以用arguments来获取,在JavaScript中,arguments是内置的实参集合(类数组),arguments存储了传递的所有实参
function fn() {
console.log(arguments);
// 我们可以按照数组的方式遍历arguments
for (var i = 0; i < arguments.length; i++) {
console.log(arguments[i])
}
}
fn(1,2,3);
// 类数组,并不是真正意义上的数组
// 具有数组的length属性
// 按照检索的方式进行存储的
// 它不能使用浏览器中数组的内置方法 pop/push...
函数表达式
// 函数表达式(匿名函数)
// var fun = function() {};
var fun = function (arr) {
console.log('我是函数表达式');
console.log(arr);
}
fun('呵呵');
// fun是变量名,不是函数名
// 函数表达式声明方式跟声明变量差不多,只不过变量里存的是值,而函数表达式里存的是函数
// 函数表达式也可以进行传递参数
网友评论