首頁  >  問答  >  主體

javascript - es6擴充運算子...的問題

#擴充符複製數組我能理解,但用於函數傳遞參數的不懂

#如上,為什麼函數參數加上擴充運算子以後,就能接受若干個參數?

fn(...arg)要怎么理解
高洛峰高洛峰2662 天前920

全部回覆(8)我來回復

  • 阿神

    阿神2017-07-05 10:43:47

    函數定義的時候, 這應該叫剩餘參數.

    如果函數的最後一個命名參數以...為前綴,則在函數被調用時,該形參會成為一個數組,數組中的元素都是傳遞給該函數的多出來的實參的值。

    看 MDN 詳細解釋:
    https://developer.mozilla.org...

    回覆
    0
  • 迷茫

    迷茫2017-07-05 10:43:47

    你可以先看一下這個栗子

    這裡的...arg其實是取得arguments的值,所以你方法可以改寫成這樣

    function fn(){
        var arg = [...arguments];
        console.log(...arg);
    }

    回覆
    0
  • PHP中文网

    PHP中文网2017-07-05 10:43:47

    把arguments轉換成陣列

    回覆
    0
  • 天蓬老师

    天蓬老师2017-07-05 10:43:47

    官方解釋:

    Bind trailing parameters to an array.

    用在函數參數中,就是將此處開始的參數轉換成一個陣列。

    fn(...args)//所有参数变为数组
    fn(a, ...args)//从第二个参数变为数组

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-07-05 10:43:47

    函數的形參本來就會保存到argument這個類別數組裡邊,...運算子可以把類別數組轉成數組

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-07-05 10:43:47

    你需要ECMAScript 6 入門

    回覆
    0
  • 淡淡烟草味

    淡淡烟草味2017-07-05 10:43:47

    你可以理解為,
    fn(...arg) 是將參數的參數,全部放置在arg這個數組裡.不管你調這函數時,傳多少個參數,都可以由arg來獲取.

    回覆
    0
  • 巴扎黑

    巴扎黑2017-07-05 10:43:47

    函數參數可以透過arguments這個類別數組物件獲得,你傳入的任意多參數本質上在函數內部就是以類別數組物件存在的,所以加上擴展運算符,只是把這個類別數組變成了參數序列

    回覆
    0
  • 取消回覆