位置: 编程技术 - 正文

Javascript学习笔记之函数篇(四):arguments 对象(javascript总结笔记)

编辑:rootadmin

推荐整理分享Javascript学习笔记之函数篇(四):arguments 对象(javascript总结笔记),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript教程推荐知乎,javascript入门教程,javascript教程,javascript学习指南,javascript学习指南,javascript学习指南,javascript入门教程,javascript教程推荐知乎,内容如对您有帮助,希望把文章链接给更多的朋友!

每一个 Javascript 函数都能在自己作用域内访问一个特殊的变量 - arguments。这个变量含有一个传递给函数的所有参数的列表。arguments 对象不是一个数组。尽管在语法上它跟数组有相同的地方,例如它拥有 length 属性。但它并不是从 Array.prototype 继承而来,实际上,它就是一个对象。因此,我们不能直接对 arguments 使用一些数组的方法,例如 push, pop 或 slice 等。 所以为了使用这些方法,我们就需要将其转换为一个真正的数组。

转化为数组

下面的代码将会返回一个包含 arguments 对象所有元素的数组。

Array.prototype.slice.call(arguments);由于转化的速度很慢,所以在性能要求严格的程序中不建议这样做。

传递参数

下面是一种比较推荐的方法,将 arguments 对象从一个函数传递到另一个函数。

Javascript学习笔记之函数篇(四):arguments 对象(javascript总结笔记)

另外还有一个比较巧妙的方法,就是同时使用 call 和 apply 快速创建一个解绑的外层方法。

函数形参和 arguments 属性的关系

arguments 对象为它自身属性和函数的形参都创建了 getter 和 setter 方法。因此,修改函数的形参会影响对应的 arguments 对象的属性值,反之亦然。

性能问题

arguments 只在两种情况下不会被创建,一是在函数内部被声明为局部变量,二是当做函数的形参。其他情况,arguments 对象总是会被创建。由于 getter 和 setter 方法总是会随着 arguments 对象的创建而创建,因此使用 arguments 对性能本身几乎没有影响。然而,有一种情形会严重影响 Javascript 的性能,那就是使用 arguments.callee。

在上述代码中,foo 函数不再是一个简单的内联扩展,因为它需要知道它自身以及它的调用者(caller)。这不仅抵消了内联扩展所带来的性能提升,同时也破坏了函数的封装性,因为函数本身可能需要依赖于一个特定的调用背景。因此,建议大家尽量不要使用 arguments.callee。

标签: javascript总结笔记

本文链接地址:https://www.jiuchutong.com/biancheng/384805.html 转载请保留说明!

上一篇:Javascript学习笔记之 函数篇(三) : 闭包和引用(javascript怎么学)

下一篇:Javascript学习笔记之函数篇(五) : 构造函数(javascript总结笔记)

  • 费改税是哪一年
  • 加计抵扣10%的进项税 会计处理
  • 纯外贸出口企业出售固定
  • 增值税普通发票和普通发票的区别怎么交税
  • 什么叫调表不调帐
  • 怎么控制成本费用餐厅
  • 变更注册资本的股东会决议范本
  • 应收账款增值税专用发票
  • 个人独资企业缴纳个人所得税
  • 计提营业账簿印花税怎么做账
  • 营改增后不动产出租适用税率
  • 未交五险一金的原因
  • 建筑业营改增账务处理怎么做?
  • 小规模开电子发票模板
  • 几年前的美元现在值钱吗
  • 企业计提的安全生产费用年末应如何处理
  • 个税按工资薪金未按时申报的处罚规定
  • 土地出让金契税什么时候缴纳
  • 民间非营利组织会计科目
  • 公司名下汽车过户给个人
  • 补提去年所得税分录
  • typecho安装插件
  • linux系统已经得到了广泛的应用
  • 商业银行的票据贴现业务与票据抵押贷款业务的区别
  • ajax无刷新更新数据
  • 在申报季度企业所得税时,残疾人工资可以加计扣除吗
  • 房地产企业项目开发法律风险
  • 史密斯理工学院
  • oracleupdate关联表
  • 未注册未认证
  • 企业年度报告内容
  • php array_search二维数组
  • springboot aop切面
  • 质量事故发生后,有责任就所发生的质量事故
  • Editorial Calendar为你的WordPress添加编辑日历 让文章定时发布更简单
  • 残保金计税基数是什么
  • 建筑工地仓库管理流程
  • 业务预算包括直销费用吗
  • mysqlbinlog命令详解
  • 一直暂估原材料有什么风险
  • 开增值税发票可以做三方协议吗?
  • 收据4联
  • 企业为员工承担个人部分的五险 一金可以税前扣除?
  • 货物运输费含税吗
  • 红冲以前年度的费用怎么做账
  • 企业持有住房税费
  • 工业企业分为哪几类
  • 开发票没有银行回单可以入帐吗?
  • 退货对方不开具红字发票怎么办
  • 小规模纳税人所得税计算
  • 经济补偿金如何做账
  • 原材料的采购成本怎么计算
  • 股权转让印花税减半征收政策
  • 一般纳税人企业所得税税率
  • 发票遗失复印件可以入账吗
  • 律师的行业
  • 公司新产品研发上市的意义和价值
  • 先款后票图片
  • sql server使用心得
  • Windows下MySQL5.7.18安装教程
  • CentOS6.9+Mysql5.7.18源码安装详细教程
  • freebsd 编译
  • win xp怎么样
  • win双系统怎么切换
  • 在linux系统中,用来存在系统所需
  • win7如何限制网速
  • window10升级不了
  • 如何旋转图片30度
  • 批处理文件实例
  • unity collider类属性方法
  • python制作gui
  • jquery类型转换
  • bootstrap js插件
  • android电池优化设置
  • 广东增值税电子普通发票图片
  • 税票是什么发票
  • 税务局网上缴税
  • 国家税务局关于印发的通知
  • 怎么查税务是否备案
  • 一般纳税人认定书
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设