美文网首页
剩余参数 - 2019-02-22

剩余参数 - 2019-02-22

作者: 勇敢的小拽马 | 来源:发表于2019-02-22 15:04 被阅读0次
    • 2019-02-22 创建

    与 arguments 不同

    for example:
    function func(a, ...args) {
      console.log(a)
      console.log(args)
    }
    func(1)
    func(1, 2, 3, 4)
    
    image.png
    function func(a, b, ...args) {
      console.log(a, b)
      console.log(args)
    }
    func(1, 2)
    
    image.png
    function func(...args) {
      console.log(args)
    }
    func(1) // [1]
    func(1, 2, 3, 4) // [1,2,3,4]
    
    后不可再跟参数
    function func(a, ...args, b) {
     
    }
    
    image.png

    函数 length 不包括 args

    当您使用剩余参数后,函数的length属性会发生一些变化

    function func(a, b, ...args) {
    }
    func.length // 2
    

    即length不包含args,为2。

    与 arguments 区别

    • arguments是一个伪数组(Array-like)
    • 剩余参数是一个真正数组(Array),具有Array.prototype上的所有方法
    • arguments上有callee,callee上有caller
    function func(a, ...args) {
        console.log(args instanceof Array)
    }
    func(1, 2) // true
    

    请注意,rest不能和arguments一起使用,会报错

    function func(...args) {
      console.log(args)
      console.log(arguments)
    }
    
    image.png

    相关文章

      网友评论

          本文标题:剩余参数 - 2019-02-22

          本文链接:https://www.haomeiwen.com/subject/hpdeyqtx.html