一、擴展運算符
<1>為什么擴展運算符會誕生?
因為箭頭函數沒有arguments,所以才有了擴展運算符
<2>在箭頭函數里面是沒有arguments,但是在普通函數里是有的。
當形參數量不固定時,用arguments進行接收,而箭頭函數里面沒有,該如何接收?這時候就要用擴展運算符。
<3>箭頭函數里面的擴展運算符可以看成arguments。
但是還是有區別的,arguments一定是個偽數組,而擴展運算符就不一定了,傳進來是什么東西,擴展運算符就是什么東西。
箭頭函數中:


數組中:
在數組里面...是展開的意思。


二、擴展運算符在vuex里輔助函數的應用

...的意思就是將State里的數據全部展開,括號里的參數就表示你從展開中的數據拿指定的數據放到當前的computed之中。
這種參數是數組的方式有弊端,如果想對數據進行處理的,無法處理,所以一般里面都寫成對象:

用這種寫法可以對數據進行處理:

注:只有mapState能用對象跟函數的方式,而其它的輔助函數,后面只能對象后面跟字符串;
用擴展運算符取actions里的方法:
參數用數組的形式取:

這種方式有大弊端:
如果在store的主模塊文件index.js里配置的有fn函數,在子模塊actions文件里也有fn函數,這種方式寫就會觸發兩個fn函數。
所有我們里面寫成對象的形式:
在模塊的小配置文件index.js里配置一個屬性 namespaces=true --子模塊的命名空間不與主模塊的命名空間產生空間。

如果要取子模塊actions里的fn函數,則:

如果要取store的主模塊文件index.js里配置的有fn函數,則不用加作用域了:

總結:映射時函數參數用對象比較安全,推薦使用對象形式取值。