• 函数参数-arguments-reset参数


    1、JS中用:arguments

    1)存放实参的集合,是一个类似于数组的对象,只有数组的 length,没有数组方法

    function  add1(a,b,c) {
       console.log(arguments.length)  // 实参个数1个
    }
    add1(3)

    2)arguments.callee 指向函数自身,可用于递归,严格模式下已禁用

    3)限制参数数量:通过arguments.length 限制传入的参数数量

    4)将 arguments 转为数组

    Array.prototype.slice.apply(arguments)

    5)当没有形式参数时,也可以传入参数,通过arguments引用

    function  add1() {
        for(var i =0 ;i< arguments.length ; i++) {
           console.log(arguments[i])  // 1,2,3
       }
    }
    add1(1,2,3)

     6)通过实参个数模拟java,c++重载:是指允许存在多个同名方法,而这些方法的参数不同

    function say () {
       switch(arguments.length) {
          case 0: 
            return ;
          case 1:
            return ;
          case 2:
            return ;
       }
    }    

    2、ES6中用:reset参数

    1)形式为 : “...变量名” ,该变量是一个数组

    2)reset参数位置在尾参数

    3)函数的length 不包括 reset参数

    function add(...arg){ }
    add(1,2,3)
    
    内部实现原理:
    function add() {
      for (var _len = arguments.length, arg = new Array(_len), _key = 0; _key < _len; _key++) {
        arg[_key] = arguments[_key];
      }
    
    }
    剩余参数(只有函数的最后一个参数才可以是剩余参数)
    function add(num,...arg){ }    // num =1  arg=[2,3]
    add(1,2,3)  
  • 相关阅读:
    FreeRTOS 移植到WIN10
    Keil debug command SAVE 命令保存文件的解析
    VS2017 编译 Visual Leak Detector + VLD 使用示例
    LaTeX 中插入GIF图片
    VS2017 + Qt5 + OpenCV400 环境配置
    记一次C++编程引用obj文件作为静态库文件
    Qt 多语言支持
    vscode 解决符号无法识别的问题
    带FIFO的UART数据接收
    MySQL Connector/Python 接口 (三)
  • 原文地址:https://www.cnblogs.com/yuyedaocao/p/12060038.html
Copyright © 2020-2023  润新知