位置: 编程技术 - 正文

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

  • 城建税和教育费附加
  • 划转国有划拨土地要交契税吗?
  • 出口退税调整后退税率包括什么档次
  • 公司股东向公司借款
  • 网上申报纳税操作视频
  • 哪些项目需要交环保税
  • 个人独资公司对外如何承担责任
  • u盘算固态吗
  • 5个点的税率是多少
  • 装订需要多长时间
  • 公允价值变动损益属于当期损益吗
  • 软件行业个人所得税
  • 什么情况下要安起搏器
  • 免费更换配件如何做账
  • 提取资本公积会计凭证
  • 电子产品委外加工
  • 发放股票股利的账务处理
  • 进口材料海关到港
  • 企业用于存货的支出
  • 企业收到财政补助项目款
  • 免税企业以前年收入多少
  • 贴现的利息能不能取出来
  • 关联企业的认定标准司法
  • 房产赠与流程是什么意思
  • 代开专票地税附加税申报办法
  • 营改增后税金由哪几项费用组成
  • 增值税专用发票验票
  • 多计提教育费附加怎么调整
  • 员工入职体检表格模板
  • 为什么有的发票没有发票章
  • 生产销售部门职责
  • 增值税留抵税额会计科目
  • 建筑业增值税会计核算是哪门课的内容
  • 预缴增值税附加税款怎么填写申报表
  • dedecms主页修改
  • win7如何调出浏览器
  • babel-plugin-import
  • 客户申请退款商家拒绝退货退款会有什么效果
  • 酒店装修期间的费用如何核算
  • 处置子公司的方式
  • vue3刷新组件
  • 财税2016年12号文件解读
  • 机器学习评估指标 - f1, precision, recall, acc, MCC
  • vue开发教程
  • nbtstat命令的用法
  • php中表单的使用
  • 营改增前取得的有形动产为标的物
  • 最新外资企业法实施条例
  • sql存储过程详解图
  • 调整后财务报表
  • 银行汇票的账务处理例题
  • 预缴增值税怎么计提
  • 制造费用工资计入什么科目
  • 金以旧换新合适吗
  • 电商账务怎么做
  • 公司向税务局缴纳税款
  • 固定资产为什么要提减值准备
  • 现金流量补充表的应付项目是什么
  • 日记账对方科目代表什么意思
  • 旅游服务会议费发票
  • 手工账的做账流程图
  • 企业未分配利润包括哪些
  • 修改mysql数据库字符集
  • redhat系统安装gvim
  • centos lftp
  • 电脑硬件用途
  • linux 使用
  • nodejs爬取数据
  • 又拍云cdn配置
  • angular.js
  • 如何用dos修复引导
  • git pull could not read from remote repository
  • python中deque
  • js实现组件功能
  • php curl获取cookie
  • python 函数 星号参数
  • javastudio
  • 百望税控盘电子发票发送邮箱
  • 湖南职工医保哪里交
  • 云南4050人员2020最新政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设