今天忽然发现了一个问题,以下:
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()
方法)形参有无区别,和我心中的疑惑才彻底解决,类比其余方法也是如此(触类旁通)。但愿对你也有所帮助。有什么问题能够评论区探讨。函数