js函数、arguments关键字**

函数

函数是一种结构,使用function关键字声明
函数不会自动运行
函数定义后,需要主动调用才会触发

语法:

//1.声明函数:将代码存入结构中
function 函数名(){
    函数体:一段代码
}

//2.调用函数:执行函数体代码
函数名();

语法误区:函数语法就两个(声明与调用)
1.声明函数:  function 函数名(){ 函数体代码 }
2.调用函数:  函数名()
3.变量取值:  函数名    (不会执行函数体代码,只是以字符串形式将变量中存储的东西打印出来而已)
<script>
    需求 : 一段代码 需要在多个地方执行
    复制粘贴弊端 : (1)代码冗余  (2)不便于维护

  1.函数作用 : 实现某个功能代码的重复利用

  //(1)声明函数:打印99乘法表
  function getChengFa() {  		
      //定义一个变量,保存即将产生的字符串(实用,后面return讲)
      let chengfaStr = '';
      //外层循环:控制层数
      for (let i = 1; i <= 9; i++) {
          //内存循环:控制列数
          for (let j = 1; j <= i; j++) {
              //拼接内容
              chengfaStr += `${j} * ${i} = ${j * i} &nbsp`;
          }
          //换行
          chengfaStr += '<br>';
      }
      //返回结果
      document.write(chengfaStr);
  }

  //(2)调用函数 : 执行函数体代码
  getChengFa();
  
  
  console.log('99乘法表,我的最爱');


  3.函数注意点
      a.以后什么样的代码你会放入函数中?
          (1)多个地方执行
          (2)独立的小功能
      b.函数与循环 有着本质的区别
          (1)本质区别
              函数 :是一种数据类型,存储代码
              循环 :是一种语法,重复执行代码
          (2)作用不同
              函数 : 一段代码在多个地方执行一次
              循环 : 一段代码在一个地方执行多次
</script>

函数参数

  • 函数参数分为两种:
    • 形参:定义函数时的参数,属于占座位
    • 实参:调用函数时的参数,属于实际数据
  • 函数不会自动运行:所以先占位;调用时就是要实际运行,所以给数据
<script>

 1.函数作用 : 实现某个功能代码的重复利用
 2.参数
     2.1 参数作用 : 调用者 传递数据 给函数
     2.2 语法
         传 : 调用者   
             函数名(实参:实际参数)
         收 : 函数
             function 函数名(形参:形式参数){ 函数体代码 }
     2.3 函数传参的本质 : 实参给形参赋值
         * 实参和形参数量可以不一致,但是按照顺序赋值
 

 // 2.利用函数实现指定层数的乘法表

  /**
  * @description: 得到指定层数的乘法表
  * @param {number} level:层数
  * @return: 产生的字符串
  */
  function getChengFa(level) {  		// level = 9
      //定义一个变量,保存即将产生的字符串
      let chengfaStr = '';
      //外层循环:控制层数
      for (let i = 1; i <= level; i++) {
          //内存循环:控制列数
          for (let j = 1; j <= i; j++) {
              //拼接内容
              chengfaStr += `${j} * ${i} = ${j * i} &nbsp`;
          }
          //换行
          chengfaStr += '<br>';
      }
      //返回结果
      document.write(chengfaStr);
  }

  //用户输入层数
  let level = +prompt('请输入一个要打印的乘法表的层数:');

  // 调用函数
  getChengFa(level);            

    </script>

函数返回值

  • 返回值是函数运行后的结果处理方式
  • 实际开发过程中,不会在函数内部进行输出,都是把结果返回给调用者
    • 函数不对结果负责:函数只负责做,至于做出来是否合适不管
  • return关键字
    • JS函数可以没有返回值
    • 可以使用return返回任意类型数据
    • return会终止函数的继续执行(结束函数运行)
    <script>
 1.函数作用 : 将代码存入变量中,可以实现代码的复用
  2.返回值
      2.1 返回值 : 函数 传递数据 给调用者
      2.2 语法
          传 : 函数
              function 函数名(形参){   return 值; }
          收 : 调用者
              let 变量名 =  函数名()

  //求任意两个数字的和
  function getSum(a,b){
     let sum = a+b;
     console.log(sum); 
      return sum;
      console.log('1111');//不会执行
  };

  //将函数调用结果显示到页面
  // 函数外部 无法直接 获取函数内部的变量
  //console.log(sum);

  /*函数调用工作流程 : 固定三个步骤
  1. 传参
  2. 执行函数体代码 
  3. 返回值
  */
  let res =  getSum(100,50);
  console.log(res);
        
    </script>
函数总结
    1.函数几种形态
        无参无返回   : 使用较少
        无参有返回   : 使用不多
        有参无返回   : 使用不多
        有参有返回   : 使用最多
    
    2.函数完整的工作流程(原理)
        a. 传参 : 调用者传递数据给函数
        b. 执行函数体代码
        c. 返回值 : 函数将结果返回给调用者

    3.函数返回值语法注意点
        a. 如果函数没有写return,默认返回值是undefined
        b. 如果函数有写return,但是后面没有接值。返回值是undeifined
        c. 如果函数有写return,并且return后面有值。返回值就是return后面的值
        d. return关键字作用 : 结束函数体代码。 return后面代码不执行

函数另一种声明方式

1.函数声明:function 函数名() {};
2.函数表达式:let 函数名 = 匿名函数

  • 匿名函数:函数的字面量又称为匿名函数,顾名思义就是没有变量名的函数
  • let 函数名 = function(){};

3.两者唯一区别:函数声明可以在任何地方调用,而函数表达式方式调用必须在声明后面

<script>
   fn1();

   //1.函数声明 :   function 函数名(){ 函数体代码 }
   function fn1(){
       console.log('11111');
   };

   fn1();

   //2.表达式声明 : let 函数名 = 匿名函数
   //具名函数 : 有名字的函数  匿名函数 = 没名字的函数
   // fn2();//报错
   
   let fn2 = function(){
       console.log('2222');
   };
   fn2();

   //3.唯一区别 :  函数声明可以在任何地方调用,表达式声明只能在声明后调用
    </script>

arguments关键字

1.arguments关键字:获取函数的所有实参
2.为什么要有arguemnts关键字

  • js是一门弱语言:声明函数的时候假如只有一个形参,实际上在调用的时候无论我们传入多少实参程序都不会报错
  • 为了防止这种情况:函数有一个arguments关键字来获取所有的实参

3.arguments特点

  • 1.只能在函数体中使用,在函数外使用会报错
  • 2.是一个特殊的数组(伪数组)
    • 有数组的三要素,但是没有数组其他的方法
  • 3.arguemngs数组中的元素与形参一一对应

4.arguements好处:可以让函数变得更加灵活

  • 可以让函数根据实参的不同而实现不同的功能
<script>
arguments关键字作用:获取函数的所有实参
 本质:当前函数的内置对象,每一个函数都有一个arguments对象,作用是存储调用者传递过来的所有实参
 特点:1.只能在函数体中使用,函数外部使用会报错
       2.是一个特殊的数组(伪数组)
       3.arguments伪数组的元素与形参一一对应
 说明:1.可以用函数变得更加灵活
      2.arguments是一个伪数组
       伪数组:只有数组的下标、元素、长度,没有数组其他方法

    /**一:argument用法演示*/

    //1.这行代码会报错,因为函数外部无法使用arguments
    // console.log ( arguments );

    //2.定义一个无参的函数,作用是打印该函数的所有参数
    function fn ( num1 ) {

        //(1)arguemnt保存的是所有的实参的值

        // console.log ( num1 );
        // console.log ( arguments );//arguments只能在函数内部使用

        //(2)arguemnt与形参是一一对应的

        //修改了形参,arguemnt也会修改
        num1 = 100;
        console.log ( arguments );//修改了形参,arguments也会修改

        //反之,修改了argeumnts,形参也会变化

    }

    fn(10,20);//实参与形参一一对应


    /** 二:arguments实际用途展示:求不确定数量的参数的和 */
    function add() {
        //定义变量保留数据
        let sum = 0;
        console.log(arguments);

        //有参数:遍历数组统计结果
        for (let i = 0; i < arguments.length; i++) {
            // 防止字符串和其他类型乱入,需要做安全判定
            let value = arguments[i];

            if (isNaN(value)) {
                return false;
            }

            //说明value肯定是数值了,但是还要保证不是字符串(影响+号运算)
            sum += Number(value);
        }
        return sum;
    }

    console.log(add());
    console.log(add(100));
    console.log(add(10,20));
    
</script>

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值