函数
1.什么是函数
函数就是封装了一段可以被重复执行调用的代码块。
目的:就是让大量代码重复使用
举例:
平时我们用的for循环 :
//1.求1-100的累加和
var num=0;
for(var i=0;i<=100;i++){
num+=i;
}
console.log(num);
//2.求10-50的累加和
var num1=0;
for(var i=10;i<=50;i++){
num1+=i;
}
console.log(num1);
//函数封装了一段可以被重复执行调用的代码块
//目的:就是让大量代码重复使用
function getSum(num1,num2){
var sum=0;
for(var i=num1; i<=num2; i++){
sum += i;
}
console.log(sum);
}
getSum(1,100);
getSum(10,50);
2.函数的使用
函数在使用时分为两步:声明函数 和 调用函数。
2.1声明函数:
function 函数名(){
//函数体
}
(1)function 声明函数的关键字,全部小写。
(2)函数是做某件事情,函数名一般是动词。
(3)函数不调用自己不执行
2.2调用函数:
函数名();
2.3函数的封装:
函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口。(类似快递打包)
3.函数的参数
3.1形参和实参(函数的参数可以有,也可以没有,个数不限,但是结果不可预计,我们尽量要匹配(参考3.3))
function 函数名(形参1,形参2......){
}
函数名(实参1,实参2......);
注意:在声明函数的小括号里面是 形参(形式上的参数)
在函数调用的小括号里面是 实参(实际的参数)
多个参数用逗号隔开
形参可以看做是不用声明的变量
3.2形参和实参的执行过程
function look(hei){ //形参是接收实参的 hei = 'IUY' 形参类似于一个变量
console.log(hei);
}
look('IUY');
参数的作用:在函数内部某些不能固定,我们可以通过参数在调用函数时传递不同的值进去。
3.3函数形参和实参个数不匹配问题
function getSum(num1,num2){
console.log(num1+num2);
}
//当实参和形参个数一致时
getSum(11,22); //结果正常输出
//当实参个数多于形参的个数时
getSum(11,22,33); //会取到形参的个数
//当实参的个数小于形参的个数时
getSum(11); //多于的形参定义为undefined 结果是NaN
//形参可以看做是不用声明的变量 num2 是一个变量但是没有接收值,结果就是undefined 11+undefined=NaN
4.函数的返回值
1.1函数的返回值格式
function getSum(){
return 需要返回的结果
}
getSum();
(1)我们函数只是实现某种功能,最终的结果需要返回给函数的调用
者 函数名(),通过return 实现的。
(2)只要函数遇到return 就把后面的结果 返回给函数的调用者 函数名() = return后面的结果
function getSum(){
return 1;
}
getSum(); //getSum() = 1
console.log(getSum());
function getSum(aaa){
return aaa;
}
// getSum();
console.log(getSum('hei'));
1.2return终止函数
(1) return语句之后的代码不被执行。
(2) return只能返回一个值 (返回的结果是最后一个值)
(3) 我们求任意两个数的 加减乘除结果(返回数组,参考以下案例)
(4)函数没有return返回undefined
//我们求任意两个数的 加减乘除结果
function getResult(num1,num2){
return [num1 + num2,num1 - num2,num1 * num2,num1 / num2];
}
var jg=getResult(2,4);
console.log(jg);
1.3break,continue,return的区别
break:结束当前循环体(如for、while)
continue:跳出本次循环,继续执行下次循环(如for、while)
return:不仅可以退出循环,还能够返回return语句中的值,同时还可以结束当前的函数体内的代码。
5.arguments的使用(只有函数才有)
当我们不确定有多少个参数传递的时候,可以用arguments来获取。在JavaScript中, arguments实际上它是当前函数的一个内置对象。所有函数都内置了一个arguments对象, arguments对象中存储了传递的所有实参。
function fn(){
console.log(arguments); //里面存储了所有传递过来的实参
}
fn(1,2,3,4);
arguments展示形式是一个伪数组(并不是真正意义上的数组),因此可以进行遍历。伪数组具有以下特点:
- 具有length属性
- 按索引方式储存数据
- 不具有数组的push, pop等方法
6.函数是可以相互调用的:
function fn1(){
console.log(11);
fn2(); //在fn1函数里面调用了fn2函数
}
fn1();
function fn2(){
console.log(22);
}
//输出结果 11 22
function fn1(){
console.log(111);
fn2();
console.log('fn1');
}
function fn2(){
console.log(222);
console.log('fn2');
}
fn1();
//输出结果 111 222 fn2 fn1
7.函数的两种声明方式
- 利用函数关键字自定义函数(命名函数)
- 函数表达式(匿名函数)
// 1.利用函数关键字自定义函数(命名函数)
function fn(){
}
fn();
//2.函数表达式(匿名函数)
//var 变量名 = function(){};
var fun = function(){
console.log("我是函数表达式!");
}
fun();