当前位置:首页 > 日记 > 正文

简单谈谈Javascript函数中的arguments

简单谈谈Javascript函数中的arguments

一、arguments的面貌

在javascript中所有的函数内部都包含了一个隐藏的变量叫arguments;它存放着所有传递到这个函数中的参数;

那么我们打开实例看看arguments的输出形式

(function fn(){ console.log(arguments)})(1,2,3,4)

结果好像是类似数组的形式打印在控制台,相信大多数人包括我看到这种输出就会认为arguments是一个数组,那么既然是数组就可以用数组的一些方法了吧,再看下一个例子;

(function fn(){ arguments.push(5) console.log(arguments)})(1,2,3,4)

结果报错了- -!;(在项目中我就是踩到了这个坑);

那我们就会有一个疑惑了,既然是数组为什么不能用push方法呢,其他的像pop,slice也不行么,是的,都不行,虽然arguments也能通过下标的形式获取到对应位置的参数,当本质上不算是真正的数组;

我们通过instanceof打印看看它是不是Array的孩子

(function fn(){ console.log(arguments instanceof Array)})()

果不其然真不是数组,那么我们就会联想到它就是个对象了;

虽然它也能用for循环遍历到里面的参数,但把它转为真正的数组才是更好的选择;

二、转化为数组

转化的方法有很多,对象冒充的方式传递给Array.prototype或遍历push到空数组或传递给另一个函数等等。。都可以完成,下面简单介绍几个转化的方法,遍历push到空数组的方法就不细讲了;

第一种方法:

(function fn(){ var arr = Array.prototype.slice.call(arguments) arr.push(5) console.log(arr)})(1,2,3,4)

这种转化方式比较慢,在性能不好的情况下不推荐这种写法;

第二种方法:

function fn() { fnArr.apply(null, arguments);}function fnArr(a,b,c,d) { ···}

个人推荐这种做法;

总结

以上就是这篇文章的全部内容了,虽然写的不多,但还是希望大家能在项目的过程当中不要误踩了arguments的坑,希望本文能对大家有所帮助。

相关文章

用 js 的 selection range 操作选

用 js 的 selection range 操作选

区域,选择,操作,内容,电脑软件,先放上最后的效果,这是点击图片以前:这是点击图片以后:非常清晰,一目了然,就算是小白用户也明白发生了什么。挺好的。最近在做编辑器相关的东西,遇到一个需求,用户在编辑器中插入或者粘贴的图片要支持点击以后,可以按…

ps怎么制作一层一层延伸的洞穴特效

ps怎么制作一层一层延伸的洞穴特效

洞穴,特效,电脑软件,ps,巧用photoshop的滤镜功能,可以制作许多意想不到的特效图片,这里笔者以介绍一款迷幻洞穴的制作方法,简要介绍滤镜的使用功能。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、首先…

Photoshop设计制作漂亮的春季小清

Photoshop设计制作漂亮的春季小清

设计制作,春季,海报,漂亮,电脑软件,作者制作电商海报非常有经验,前期需要找一些同类的产品海报进行参考;然后根据自身产品特点构思画面并画出草图;再搜集素材;后期溶图,调色,并增加文案即可。最终效果1、轮廓图。2、下面是根据自己的构思找到的素…

JS异步加载的三种实现方式

JS异步加载的三种实现方式

异步加载,三种,方式,电脑软件,JS,js加载的缺点:加载工具方法没必要阻塞文档,过多js加载会影响页面效率,一旦网速不好,那么整个网站将等待js加载而不进行后续渲染等工作。 有些工具方法需要按需加载,用到再加载,不用不加载,。默认正常模式下下,JS是…

JS鼠标滚动分页效果示例

JS鼠标滚动分页效果示例

鼠标,分页,示例,效果,电脑软件,首先先看问题:在开发的时候,看到这种现象 就会思考:为什么左边的数据出来比右边的慢呢?因为这里没有进行分页,左边的数据多,所以查询相对较慢。解决办法就是进行分页,但是在项目中用到的插件,不能控制样式,改变分页的…

excel函数值不可用错误怎么解决解

excel函数值不可用错误怎么解决解

函数,错误,方法,解决方法,不可用,  excel的使用过程中经常会出现一些错误,那么值不可用错误就是其中的一种,很常见,那怎么解决这个问题呢?一般情况下,一部分原因是引用的数据是错的,一部分是因为公式的问题,下面给大家分享excel函数值不可用错…

微信小程序实现倒计时60s获取验证

微信小程序实现倒计时60s获取验证

验证码,倒计时,程序,电脑软件,微信小,本文实例为大家分享了微信小程序倒计时获取验证码的具体代码,供大家参考,具体内容如下1、工具类(引用微信小程序提供的工具类)countdown.jsclass Countdown {constructor(options = {}) {Object.assign(thi…

YII2自动登录Cookie总是失效的解决

YII2自动登录Cookie总是失效的解决

失效,解决方法,自动登录,电脑软件,Cookie,前言最近做Yii2自动登录功能,发现即使开启了Yii2的自动登录配置功能,浏览器关闭后,再次打开浏览器还是处于非登录状态。网上查询资料基本没有相同情况。查询登录源码:protected function sendIdentityC…

PS怎么制作清明节字体海报?

PS怎么制作清明节字体海报?

字体,清明节,海报,电脑软件,PS,清明节到了,各路商家或宣传都想设计一个美美的清明节海报,本经验将介绍如何设计一个清明节海报,希望能够帮助读者。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、【打开…

怎么去除PPT中单击此处添加文标题

怎么去除PPT中单击此处添加文标题

单击,方法,教程,步骤,标题,  对于一些经常用PPT做汇报或者开会的白领们,经常会遇到这样的问题,自己辛辛苦苦做好的PPT,却无端冒出了许多“单击此处添加标题”、“单击此处添加文本”等内容,那么下面小编就教你怎么去除这…

简单实现JavaScript弹幕效果

简单实现JavaScript弹幕效果

简单实现,效果,弹幕,电脑软件,JavaScript,不知大家有没有感受到,弹幕又是另一出好戏!! 不过我个人还是比较排斥看电视的时候被出来的弹幕打扰。今天我们来写一个简单的弹幕。简单到什么程度呢?看下效果: 由图可以看出,我们的呆毛html结构确实是非…

JS操作时间 - UNIX时间戳的简单介

JS操作时间 - UNIX时间戳的简单介

时间戳,操作,必看,简单,时间,准备知识GMT(Greenwich Mean Time) - 格林尼治时间。UTC(Universal Time Code) - 国际协调时间。PST(Pacific Standard Time,太平洋标准时间)。UTC出现的比GMT时间晚,可以认为UTC时间更加精确,不过它们之间只相差几…