关于方法、函数不带形参接收实参的问题

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

相关文章
相关标签/搜索