今天忽然發現了一個問題,以下:
vue
我在寫Vue的時候檢查$router
方法時,忽然感受到$router
的push()
方法看着有些彆扭,最後回顧了一下JS的push()
方法,而後本身寫了一段有關數組的代碼,控制檯檢查,對比數組的push()
就發現Vue中(圖一)的push()
方法帶了三個形參,而數組中的push()
方法沒帶形參,可能這裏就有同窗以爲帶形參是爲了接收傳過來的實參,而沒帶則不接收,其實按我往常的思惟來講也是這樣的,但事實上
我給push()
方法中添加了實參"tao"
,而且push()
方法也實際接收到了這個參數添加到了數組末尾,這就開始讓我詫異起來,到底這個push()
方法是如何接收到這個"tao"
的呢?Vue中的push()
方法好理解,就是形參接收實參,沒什麼好講的。這裏主要講一下數組的push()
方法接收實參問題。數組
按流程,不會先百度,結果前先後後花了幾十分鐘也沒找到我想要的答案。我不斷的改變搜索思路,最終找到了一個叫Arguments
對象的東西,它能夠很好的消除我心裏的詫異。來看一下關於Arguments
對象使用場景。
也就是說,當接收到的實參數量多於形參時,能夠在函數中使用Arguments
對象來表示多出來的實參。
arguments[0]
表示第一個參數,這在表示方法上相似於數組,以此類推不一樣的索引表示接收到的不一樣參數。因而我檢驗了一下
輸出
顯而易見arguments[0]
接收到了"tao"
,因爲沒見過官方的說明,因而我就猜想數組的push()
方法中確定也是用Arguments
對象來接收參數,由於這樣作的好處是能夠傳任意個數的參數,也恰好符合數組中push()
方法添加數據的需求(想添加幾個寫幾個),對於未知數量的實參,至於內部寫幾個arguments[i]
來接收這裏咱們不討論(發散思惟哦)。至此,這兩個push()
方法(vue中$router
的push()
方法不等於數組的push()
方法)形參有無區別,和我心中的疑惑才徹底解決,類比其餘方法也是如此(觸類旁通)。但願對你也有所幫助。有什麼問題能夠評論區探討。函數