關於方法、函數不帶形參接收實參的問題

今天忽然發現了一個問題,以下:
圖一vue


圖二
我在寫Vue的時候檢查$router方法時,忽然感受到$routerpush()方法看着有些彆扭,最後回顧了一下JS的push()方法,而後本身寫了一段有關數組的代碼,控制檯檢查,對比數組的push()就發現Vue中(圖一)的push()方法帶了三個形參,而數組中的push()方法沒帶形參,可能這裏就有同窗以爲帶形參是爲了接收傳過來的實參,而沒帶則不接收,其實按我往常的思惟來講也是這樣的,但事實上js
我給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()方法)形參有無區別,和我心中的疑惑才徹底解決,類比其餘方法也是如此(觸類旁通)。但願對你也有所幫助。有什麼問題能夠評論區探討。函數

相關文章
相關標籤/搜索