- 函数的概念
函数:就是封装了一段可被重复调用执行的代码块,通过代码块可以实现大量代码的重复使用; - 函数的使用
函数在使用的过程中分为两步:声明函数和调用函数;
注意:函数不调用就不会执行;
<script>
//1.声明函数
// function 函数名(){
// }
function sayHi(){
console.log('hi~');
}
//(1)function 声明函数的关键字 全部小写
//(2)函数做某件事情,函数名一般是动词
//(3)函数不调用自己不执行
//2.调用函数
// 函数名()
sayHi();
//调用函数的时候千万不能忘记加()
</script>
函数的封装就是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口
<script>
function getSum(){
var sum = 0;
for(var i = 0; i <= 100; i++){
sum += i;
}
console.log(sum);
}
getSum();
</script>
- 函数的参数
在声明函数时,可以在函数名称后面的小括号中添加一些参数,这些参数被称为形参,而在调用该函数时,同样也需要传递相应的参数,这些参数称为实参。
(1)形参:形式上的参数,函数定义的时候,传递的参数,当前并不知道是什么;
(2)实参:实习上的参数,函数调用的时候,传递的参数,实参是传递给形参的;
注意点:多个参数用逗号隔开,形参可以看作是没有声明的变量;
函数形参实参个数不匹配:
如果实参个数和形参个数一致 则正常输出结果;
如果实参的个数大于形参的个数;只取到形参的个数
如果实参个数小于形参个数;多的形参定义为undefined,结果为NaN
<script>
//函数形参实参个数匹配
function getSum(num1, num2){
console.log(num1 + num2);
}
//1.如果实参个数和形参个数一致 则正常输出结果
getSum(1, 2);
//2.如果实参的个数小于形参的个数
getSum(1, 2, 3);
//3.如果实参个数小于形参个数 多余的参数为undefined
//形参可以看作是不用声明的变量 num2 是一个变量但是没有接收值 就是undefined
getSum(1); //NaN
</script>
- 函数的返回值
有的时候,我们会希望函数将返回值返回给调用者,此时通过使用return语句就可以实现。
<script>
function getArrMax(arr){//arr接收一个数组
var max = arr[0];
for(var i = 1; i < arr.length; i++){
if(arr[i] > max){
max = arr[i];
}
}
return max;
}
//在我们实际开发里面,用变量来接收返回结果
var re = getArrMax([5, 111, 1, 0]);
console.log(re);
</script>
注意点:(1)return返回函数值,并且具有终止函数的功能,return后面的代码不会被执行;(2)return只会返回一个值,如果写了多个值,则返回最后一个值,多个值返回可以考虑用用数组;(3)函数有return,返回return后面的值,如果没有,就返回undefined;
break、continue、return的区别:
break:结束当前循环(如:for、while);
continue:跳出本次循环,继续执行下次循环(如:for、while);
return:不仅可以退出循环,还能够返回return语句中的值,同时还可以结束当前的函数体内的代码;
- arguments的使用
当我们不确定有多少个参数传递的时候,可以用arguments来获取,在JavaScript中,arguments实际上是它当前函数的一个内置对象,所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参。
arguments展示形式是一个伪数组,因此可以进行遍历,伪数组具有以下特点:
(1)具有length性质
(2)按索引方式存储数据
(3)不具有数组的push、pop等方法
(4)只有函数有arguments对象,而且是每个函数内置好的
- 函数的两种声明方式
1.利用函数关键字自定义函数(命名函数)
2.函数表达式(匿名函数)
var 变量名 = function() {};
var fun = function() {
console.log('我是函数表达式');
fun();
//fun是变量名 不是函数名
//函数表达式声明方式跟声明变量差不多,只不过变量里面存的是值
//而函数表达式里面存的是函数
//函数表达式也可以进行传递参数
}