学习目标:
为什么需要函数
根据语法书写函数
根据需求封装函数
形参和实参的传递过程
使用函数的返回值
使用arguments获取函数的参数
1.函数的实参和形参
<script> //函数形参实参个数匹配 function getSum(num1, num2){ //num1 num2 为形参 console.log(num1+num2); } // 1.如果实参个数和形参个数一致则正常输出结果 // 2.如果实参个数多于形参个数 会取到形参个数 getSum(1,2,3); //123 为实参 // 3.如果实参个数小于形参的个数 多余的形参定义为undefined 最终结果就是NaN //形参可以看作不用声明的变量 num2是一个变量但是没有接收值 结果就是undefined getSum(1);//NaN //建议 我们尽量让实参个数和形参个数相匹配
2.函数的返回值
2.1 return 语句
<script> //函数是做某件事或者实现某种功能 function cook(aru){ console.log(aru); } cook('大肘子'); //函数的返回值格式 /* function 函数名(){ return 需要返回的结果; } 函数名(); */ //(1)我们函数只是实现某种功能,最终的结果需要返回函数的调用者 函数名() 通过return()来实现 //(2)只要函数遇到return就把后面的结果 返回给函数的调用者 函数名() = return后面的结果 //3.代码验证 function getResult(){ return 666; } getResult(); //getResult = 666; console.log(getResult()); // 4.求任意两个数的和 function getSum(sum1,sum2){ return sum1+sum2; } console.log(getSum(1,2)); </script>
2.2函数返回值实例
任意两个数的最大值
function getMax(sum1,sum2){ /* if (sum1 > sum2) { return sum1 ; }else{ return sum2 ; } */ return sum1 > sum2 ? sum1 : sum2; } console.log(getMax(2,3));
任意一个数组中的最大值
</script> function getarrMax(arr){ //arr接受一个数组 var max = arr[0]; for(var i = 0 ;i<arr.length ; i++) { if(arr[i] > max) { max = arr[i]; } } return max; } var re = getarrMax([5,2,99,101,67,77]);//实参是一个数组 console.log(re); </script>
2.3 return终止函数
return之后的代码就不再执行了
<script> //函数返回值注意事项 //1.return终止函数 function getSum(num1,num2){ return num1+num2;//return 后面的代码不会被执行 alert('我是不会被执行的偶') } console.log(getSum(1,2)); </script>
2.4 return 只能返回一个值。如果逗号隔开多个值,以最后一个为准
<script> // function getSum1(num1,num2){ return num1,num2;//return 返回的接轨是最后一个值 } console.log(getSum1(1,2)); </script>
2.5.非要返回多个值,用数组
//3.非要返回多个值,用数组 function getResult(num1,num2){ return [num1+num2 , num1 - num2 , num1 * num2 , num1 / num2]; } console.log(getResult(1,2));
2.6 函数没有return返回undefined
function getResult(num1,num2){ } console.log(getResult(1,2));//没有return返回undefined;
3.break,continue,return的区别
break 结束当前循环体(for while)
continue 跳出本次循环,继续执行下次循环(for while )
return 不仅可以退出循环 还能返回return语句中的值 同时还可以结束当前函数体内的代码
4.arguments的使用
当我们不确定有多少个参数传递的时候,可以用arguments来获取。在JavaScript中,arguments实际上他是当前函数的一个内置对象。所有函数都内置了一个aguments对象,arguments对象存储了了传递函数的所有实参。
<script> // arguments的使用 只有函数才有,arguments对象 而且是每个函数都内置好了这个arguments function fn(){ console.log(arguments);//里面存储了所有传递过来的实参 arguments = [1,2,3] console.log(arguments.length); console.log(arguments[2]); // 我们可以按照数组的方式遍历arguments for (var i=0 ; i < arguments.length ; i++){ console.log(arguments[i]); } } fn(1,2,3); </script>
arguments实例
//利用arguments求数组中的最大值 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(133,244,3)); </script>
5.函数的两种声明方式
(1)利用函数关键字自定义函数(命名函数)
function fn (){};
fn;
(2) 函数表达式(匿名函数)
var 变量名 = function() {};
和变量命名很相似