# 函数的概念
函数:就是封装了一段可被
重复调用执行的代码块通过次代码块可以实现大量代码的重复使用<script> // 1-100的累加和 var num =0; for(var i =1; i<=100; i++){ num += i; } console.log(num); // 函数就是封装了一段可以被重复执行调用的代码块 目的是让大量代码重复使用 // 封装函数 function getSum(num1 ,num2){ var num =0; for(var i =num1; i<=num2; i++){ num += i; } console.log(num); } // 调用函数 getSum(1,100); getSum(1,50); </script>
# 函数的使用
# 1 声明函数
//声明函数
function 函数名(){
//函数体代码
}
function 是声明函数关键字 必须小写
由于函数一般是为了实现某个功能才定义的,所有通常我们将函数名 命为动词 比如getSum
# 2调用函数
//调用函数
函数名(); //通过调用函数名来执行函数体代码
调用的时候千万不要忘了添加小括号
口诀 函数不调用自己不执行
注意: 声明函数本省并不会执行代码 只有调用函数时 才会执行函数体代码
# 3函数的封装
- 函数的封装就是把一个或者多个功能 通过函数的方式封装起来 对外只提供一个简单的函数结构
<script> // 函数使用分为2步骤 声明函数和调用函数 // 1 声明函数 function sayHi(){ console.log('hi'); } //1 function 声明函数关键字 // 2 函数是做某些事情 函数名一般是动词 sayHi // 3函数不调用 自己不执行 // 2 调用函数 sayHi(); </script>
# 函数的参数
在
声明函数时,可以在函数名称后面的小括号中添加一些参数,这些参数被称为形参,而在调用该函数时,同时也需要传递相应的采纳数, 这些参数被称为实参
| 参数 | 说明 |
|---|---|
| 形参 | 形式上的参数 函数定义的时候 传递的参数 党史并不知道是什么 |
| 实参 | 实际上的参数 函数调用的时候传递的参数 实参是传递给形参的 |
参数的作用: 在函数内部某些值不能固定, 我们可以通过参数值在调用函数时传递不同的值进去
# 函数形参和实参个数不匹配问题
| 参数个数 | 说明 |
|---|---|
| 实参个数等于形参个数 | 输出正确结果 |
| 实参个数多于形参个数 | 支取到形参的个数 |
| 实参个数小于形参个数 | 多的形参定义为undefined 结果为NaN |
注意:在JavaScript 中 形参的默认值是Undefined
# 小结
- 函数可以带参数也可以不带参数
- 声明函数的时候,函数名括号里面的是形参,形象的默认值为undefined
- 调用函数的时候,函数名括号里面的是实参
- 多个参数中间用逗号分隔
- 形参的个数可以和实参个数不匹配 但是结果不看预计,我们尽量要匹配
# 函数的返回值
return语句
<script>
// 函数时做某些事 或者实现某种功能
function cook(aru){
console.log(aru);
}
cook('yes');
// 函数返回值
function cook2(food){
return 'six';
}
console.log(cook2());
// 函数返回值
function cook3(food){
return food;
}
console.log(cook3('hello'));
// 案例1 求两个数的最大值
function max(num1,num2){
// if(num1>num2){
// return num1;
// }else{
// return num2;
// }
// }
return num1>num2? num1:num2;
}
console.log(max(10,20));
console.log(max(100,20));
// 案例2 利用函数求任意一个数组中的最大值
function arrMax(arr){ //arr接收一个数组
//在我们实际开发里面 我们经常用一个变量来接收 函数返回结果使用更简单
var max = arr[0];
for(var i =1; i<=arr.length; i++){
if(max <arr[i]){
max = arr[i];
}
}
return max;
}
var ar = arrMax([1,4,5,6,7,70]);
console.log(ar);
</script>
# 函数返回值注意事项
- return语句之后的代码不被执行
- return 只能返回一个值
# 函数的返回值
函数没有return 返回 undefined
- 如果return 则返回return 后面的值
- 如果没有return则返回undefined
// 我们函数如果有return 则返回的是return 后面的值 如果没有 return 则返回undefined function ar(){ return 900; } console.log(ar()); //没有写返回值 返回undefined function arr2(){ return ; } console.log(arr2());
# break continue return 的区别
- break: 结束当前的循环体(如for while)
- continue: 跳出本次循环, 继续执行下次循环(如for while)
- return: 不仅可以退出循环, 还能够樊慧芳return语句中的值, 同时还可以结束当前的函数体内的代码
# arguments的使用
<script> // arguments 使用 只有函数才有arguments 对象 而且是每个函数都内置好了这个arguments function getNum(){ // console.log(arguments); //里面存储所有传递过来的实参 // console.log(arguments.length); // console.log(arguments[2]); // 遍历arguments for(var i = 0; i<arguments.length ; i++){ console.log(arguments[i]); } } getNum(1,34,5,6,7) // 伪数组 并不是真正意思上的数组 // 1 具有 数组length 属性 // 2 按照索引方式进行存储 // 3 他没有真正数组的一些方法 pop() push() 等等 </script>
# 函数案例
# 数组翻转
<script> // 利用函数对数组进行翻转 function arrfz(arr){ var newarr = []; for(var i = arr.length -1; i>=0; i--){ newarr[newarr.length] = arr[i]; } return newarr } var ls = arrfz([1,35,43,6545,76,5,76,78,6]); console.log(ls); var l = arrfz(['gfs','fsgfs','rtwrtw','trsefdtws']); console.log(l); </script>
# 函数可以调用另外一个函数
因为每个函数都是独立的代码块 用于完成特殊任务,因此经常会用到 函数相互调用的情况
<script> // 函数是可以相互调用的 function fn1(){ console.log(223); fn2(); //在fn1 中调用 fn2 } fn1(); function fn2(){ console.log(3545); } </script>
# 函数的两种声明方式
<script>
// 函数的两种声明方式
// 1 利用函数关键字自定义函数(命名函数)
function fn(){
}
fn();
// 2 函数表达式 (匿名函数)
// var 变量名 = function(){}
var fun2 = function(name){
console.log('hello');
console.log(name);
}
fun2('world');
// 1 fun 是变量名 不是函数名
// 2 函数表达式声明方式 跟声明变量差不多 只不过变量里存的是值 而 函数表达式里面存档是函数
// 3 函数表达式也可以进行传递参数
</script>