JavaScript 函数

函数
  在JS里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用。
   虽然for循环语句也能实现-些简单的重复操作,但是比较具有局限性,此时我们就可以使用JS中的函数。
   函数的概念
    函数就是封装了一段可以被重复执行调用的代码块,目的就是让大量代码重复使用
   声明函数
   function 函数名 (){
   //函数体
   }
   function声明函数的关键字全部小写
   函数是做某件事情,函数名一般是动词
   函数不调用自己不执行

调用函数
  函数名 ()
  调用函数的时候千万不要忘记加小括号
   注意;声明函数本身并不会执行代码,只有调用函数时才会执行函数体代码。
  函数的参数
    1.形参 在声明函数的小括号里面是形参(形式 上的参数)
    用法
    function 函数名 (形参1,形参2,形参3……){
    }
    2.实参 在函数调用的小括号里面是实参(实际的参数)
    函数名 (实参,实参……)
    形参就像是帮 实参占住位置 当执行调用函数时 会将实参传给形参 然后执行函数块
    函数的参数可以有,也可以没有个数不限
    多个参数间用逗号隔开
    形参可以看作是不用声明的变量
    形参 于 实参 数量的关系
     1.如果实参的个数和形参的个数一致则正常输出结果
     2.如果实参的个数多于形参的个数 会取到形参的个数
     3.如果实参的个数小于形参的个数 多于的形定义为undefined最终 的结果就是NaN
      形参可以看做是不用声明的变量num2 是个变量但是没有接 受值结果 就是undefined
      我们函数只是实现某种功能,最终的结果需要返回给函数的调用者函数名() 通过return来实现
      函数内部不应该有输出结果

在这里插入图片描述
例子
在这里插入图片描述

函数的返回值
  1.return
   有的时候,我们会希望函数将值返回给调用者,此时通过使用return语句就可以实现。
   只要函数遇到return就把后面的结果返回给函数的调用者
  两种功能
   1.返回 值
   2.终止函数 return语句之后的代码不被执行。
   特点
    return 只能返回一个值
    当return后面有多个值的时候 返回的是最后一个值
    在需要返回多个值时可以用数组
     return [值]
    我们的函数如果有return则返回的是return后面的值,如果函数么有return 则返回 undefined

例子
在这里插入图片描述
使用数组输出多个值
在这里插入图片描述
break,continue,return 的区别
  break :结束当前的循环体(如for. while )
  continue : 跳出本次循环,继续执行下次循环(如for. while )
  return :不仅可以退出循环 ,还能够返回 return语句中的值,同时还可以结束当前的函数体内的代码
  格式
   function 函数名(){
   return 需要返回的结果;
     }
   console.log(函数名())
   在我们实际开发里面,我们经常用一个变量来接受函数的返回结果使用更简单
     var re = 函数名()
     console.log(re)
arguments的使用
  当我们不确定有多少个参数传递的时候,可以用arguments来获取。在JavaScript中, arguments实际上它是当前函数的一个内置  对象。所有函数都内置了一个 arguments对象, arguments对象中存储了传递的所有实参
用法:

function fn(){
        console.log(arguments); //存储所有传递来的实参
        
    }
    fn(1,2,3)

这时输出的为
在这里插入图片描述
我们可以看到输出的是一个 类似数组的格式显示但它并不是一个真正的数组而是一个伪数组
  arguments展示形式是一一个伪数组,因此可以进行遍历。伪数组具有以下特点
  1.具有length属性
  2.按索引方式储存数据
  3.不具有数组的push, pop等方法
想要一个元素一个元素的读取我们可以用 for 循环 数组遍历来实现

在这里插入图片描述

另外只有函数才有arguments对象而且 是每个函数都内置好了这介个arguments

关于arguments 的练习
在这里插入图片描述

运行结果如下
在这里插入图片描述
可以看出来确实是取到了每一个伪数组中的最大值

接下来把昨天学和和今天的接和一下
也就是利用函数反转任意一组数组
我们要先写好函数中的代码块让后在调用函数 来对任意数组进行反转
函数块

function reverse (arr){
	var newArr =[];
	for (var i = arr.length - 1;i >= 0; i--){ //这里是取旧数组中的最后一个元素  在这里我的arr.length是6 所以减一 正好是 最后一个元素的下标 
		newArr[newArr.length] =arr[i]; //这里是把旧数组最后一个元素放入新数组里的第一个 newArr.length 为0 正好从下标0开始
	    }
	    return newArr;
    }
    var arr1 = reverse ([1,2,3,4,5,6]);
    console.log(arr1);

输出结果如下
在这里插入图片描述
又是一个例子
利用函数冒泡排序数组

 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]) { //j 代表当前元素 j +1 代表后面的一个元素 两个作比较
                        var temp =arr[j]; //将 当前元素前面元素的值给变量 
                        arr[j] = arr[j + 1]; //当前元素 取代掉 后面的元素
                        arr[j+1]= temp; // 实现俩元素交换
                    }
                }
            }
            return arr;
        }
        var arr1 = sort([1,4,6,9,5])
        console.log(arr1);

输出结果
在这里插入图片描述

排序成功

接下来 我们还有一个例例例子
使用函数封装 判断闰年

   function isRenNian (nian){
            //是闰年返回true 不是返回 false
            var flag = false;
            if (nian %4 ==0 &&nian % 100 !=0 ||nian %400 ==0 ){
                flag =true
            }
            return flag;
        }

        console.log(isRenNian(2000));
        

接下来。。。还是有一个例子。。。
在函数中调用另一个函数 (禁止套娃)

函数可以调用另外一个函数
因为每个函数都是独立的代码块,用于完成特殊任务,因此经常会用到函数相互调用的情况。

 function fn1(){
            console.log(11);  //在fn1中调用fn2
            fn2();
        }
        fn1()
        function fn1(){
            console.log(22);  //2 调用1
            fn1();
        }

上面的运行结果就是。。。。
在这里插入图片描述
变成了 无限调用。。。
这个只是让我们理解调用函数的意思真正的用法可不是这样。。(不然电脑都要卡死了)

调用函数的特点

   function fn1(){
            console.log(11);
            fn2();
            console.log('fn1');
            
        }
        
        function fn2(){
            console.log(22); 
            console.log('fn2');
            
        }
        fn1()

输出结果
在这里插入图片描述
运行过程是调用fn1 打印11 跳转到fn2 打印22 打印 fn2 最后再回来 打印 fn1 在调用的时候 会直接跳转到fn2 执行一便 之后回来 继续执行 fn1

因为每个函数都是独立的代码块,用于完成特殊任务,因此经常会用到函数相互调用的情况。
要记住 上面的执行过程哦 别弄错了 很重要的

好吧没有例子了 剩下的还有函数的两种声明方式
1. 利用函数关键字 function
2. 函数表达式 (匿名函数)
格式
var 变量名 = function ( ){ //注意这里var声明的是变量名
}
函数表达式创建的函数 调用时 是用变量名
变量名( )
函数表达式声明方式跟声明变量差不多,只不过变量里面存的是值而函数表达式里面存的是函数

函数表达式也可以进行传递参数
今天就到这了 明天继续

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值