位置: 编程技术 - 正文

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总结笔记)

  • 行政事业单位决算编制流程图
  • 我国会计准则规定,会计核算以人民币为记账本位币
  • 监理公司成本核算方法
  • 收款金额比开票金额少是对方扣的手续费
  • 补偿金需要缴纳个税吗?
  • 小规模企业所得税税率多少
  • 驾驶员行车补贴开什么发票
  • 公司支付员工工伤赔偿怎么做账
  • 合同履约成本合同结算如何处理抵消
  • 多缴纳的附加税怎么退
  • 税率和征收率的含义和区别
  • 多交的应交税费怎么算
  • 付款单中未全付款怎么办
  • 微信小程序实现微信支付
  • 股东转账实收资本怎么填
  • 金税盘在电脑上怎么打开
  • 哪些人可以享受长护险
  • 应付工会经费 实际支付
  • 环评公司的成本核算
  • 500元以下不需要发票
  • 公司投资另外一个公司全资占股需要什么流程
  • 会计分录如何试算出来的
  • 融资租赁直租会查征信吗
  • 会计制度备案成本核算方法一般选择哪个
  • 穿越火线改名卡买完了怎么用
  • 期间费用包括哪几个科目
  • 增值税价外费用是什么意思
  • et.exe进程占用
  • 企业代扣代缴个人所得税会计分录
  • 兼职老师工资怎么扣税
  • 人脸识别测颜值,al
  • 非盈利组织固定资产没入帐 怎么调账
  • 负债大于资产能贷款吗
  • err03 failed to
  • 前端调用后端代码
  • 数组 php
  • vue3动态路由权限
  • vue做项目的流程
  • 公司有一个残疾人
  • 用友软件年度结转操作步骤
  • 从财务报表中能看出什么
  • python numpy 删除元素
  • 本月损益类未结转为零的一级科目6603
  • 税前利润包含
  • 实收资本可以用于偿还借款
  • 事业单位以资产为准吗
  • 采用公允价值模式计量的投资性房地产处置
  • 银行开的手续费发票开错了
  • 一般纳税人登记 核算地址
  • 所得税汇算清缴调整后要账务处理吗
  • 服务业暂估成本怎样做账?
  • 建筑企业增值税怎么算
  • 在会计中,结转材料实际采购成本时什么意思
  • 资金账簿的计税依据
  • 工程施工企业收到工程款,怎么做分录
  • 出口货物质量不足怎么办
  • 工程进度开票如何入账
  • 物流运输车类型
  • sysbench内存性能测试
  • sql语句错误提示
  • MySQL去除重复数据
  • win2003无法启动
  • Ubuntu Server 11.04安装GNOME 3的方法
  • uefimbr安装win7
  • win8系统版本
  • Linux/Ubuntu chmod命令详解使用格式和方法
  • centos配置yum
  • mac硬盘的常见问题及解决
  • win7系统磁盘分区必须分区为什么才能安装
  • popupblocker是什么
  • linux root 密码忘了怎么办
  • windows8任务管理器在哪
  • linux中的shell命令
  • shell终端是什么意思
  • jquery设置滚动条
  • jqgrid tree
  • 如何获取电子户口簿
  • jquery 触发点击
  • python中txt文件的读写
  • 广州地税电子税票查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设