一、函数的返回值
1、return语句之后的代码不被执行
//函数返回值注意事项
//1.return 终止函数
function getSum(num1,num2){
return num1+num2;//return 后面的代码不会被执行
alert('我是不会被执行的')
}
console.log(getSum(1,2))
2、return只能返回一个值,如果用逗号隔开多个值,以最后一个值为准
//return只能返回一个值
function ac(num1,num2){
return num1,num2;//返回的值以最后的值为准
}
console.log(ac(1,2)) //打印出来的值为2
3、return中如果需要返回多个值,可以通过存放到数组中的形式返回
//我们求任意两个数的 加减乘除结果
function getac(num1,num2){
return [num1+num2,num1-num2,num1*num2,num1/num2];
}
var abc =getac(2,1);//返回的是一个数组
console.log(abc);
4、注意事项
- 我们的函数如果有return 则返回的是return后面的值,如果函数没有return则返回undefined
function fun1(){
return 666;
}
console.log(fun1())//返回666
function fun2(){
}
console.log(fun2())//返回undefined
5、break,continue,return的区别
- break:结束当前循环体(如for,while)
- continue:跳出本次循环,继续执行下次循环(如for,while)
- return:不仅可以退出循环,还能够返回return语句中的值,同时还可以结束当前函数体内的代码
二、函数中arguments的使用
当我们不确定有多少个参数传递的时候,可以用arguments
来获取。在JavaScript中,arguments实际上它是当前函数的一个内置对象
,所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参。
//arguments的使用 只有函数才有arguments对象 而且是每个函数都内置好了这个arguments
function fn(){
console.log(arguments);//里面存储了所有传递过来的实参
//我们可以按照数组的方式遍历arguments
for(var i = 0;i<arguments.length;i++){
console.log(arguments[i])
}
}
fn(1,2,3)
1、arguments展示形式是一个伪数组
,因此可以遍历。伪数组具有以下特点:
- 具有length属性
function fn(){
console.log(arguments);
console.log(arguments.length);
}
fn(1,2,3)
-
按索引方式存数据
-
不具有数组的push,pop等方法
2、案例1:利用函数求任意个数的最大值
//利用函数求任意个数的最大值
function getmax(){
var max = arguments[0];
for(var i=1;i<arguments.length;i++){
if(arguments[i]>max){
max = arguments[i];
}
}
return max
}
console.log(getmax(1,2,3))
console.log(getmax(1,2,66,77))
console.log(getmax(1,2,3,66,77,88))
3、案例2:利用函数封装的方式,翻转任意一个数组
//利用函数翻转任意数组 reverse翻转
function reverse(arr){
var newArr = [];
for(var i=arr.length -1;i>=0; i--){
newArr[newArr.length] = arr[i];
}
return newArr;
}
var arr1 = reverse([2,5,6,7,8]);
console.log(arr1);
4、案例3:利用函数封装方式,对数组排序——冒泡排序
//利用函数冒泡排序 sort 排序
function sort(arr){
for(var i=0;i<arr.length-1;i++){
for(var j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
var arr1 = sort([5,3,7,9]);
console.log(arr1)
5、案例4:判断闰年
要求:输入一个年份,判断是否是闰年(闰年:能被4整除并且不能被100整数,或者能被400整除)
//利用函数判断闰年
function isrunyear(year){
//如果是闰年我们返回true 否则返回false
var flag = false;
if(year % 4 == 0 && year % 100 !=0 || year % 400==0){
flag = true;
}
return flag;
}
console.log(isrunyear(2000));
三、函数中一个函数可以调用另外一个函数
function at1(){
console.log('这是第一次打印')
at2();//2.第二步,在第一个函数中去调用第二个函数,此时就会打印出第二个函数中的值
}
at1();//调用第一个函数
//1.这个时候打印出来的只有第一个函数中的值,因为第二个函数中没有被调用
function at2(){
console.log('这是第二次打印')
}
执行流程是:
- 首先执行的是function at1
- 发现函数at1被调用,就执行函数at1
- 按照从上到下的顺序执行,首先打印第一个内容
- 在执行调用at2函数
1.案例6:用户输入年份,输出当前年份2月份的天数
//用户输入年份,输出当前年份的2月份天数
function backday(){
var year = prompt('请你输入年份:');
if(isrunyear(year)){
//调用函数需要加()
alert('当前年份是闰年2月份有29天')
}else{
alert('当前年份是平年2月份有28天')
}
}
backday();
//通过一个函数去调用另一个函数的来判断
function isrunyear(){
//如果是闰年我们返回true 否则返回false
var flag = false;
if(year % 4 == 0 && year % 100 !=0 || year % 400==0){
flag = true;
}
return flag;
}
四、函数的两种声明方式
1、利用函数关键字自定义函数
function fn(){
}
fn();
2、函数表达式(匿名函数)
var 变量名 = function(){
};
var fn = function(){
console.log('我是一个函数表达式')
}
fn();
//(1)fn是变量名 不是函数名
//(2)函数表达式声明方式跟声明变量差不多,只不过变量里面存的是值 而 函数表达式里面存的是函数
//(3)函数表达式也可以进行传递参数