位置: 编程技术 - 正文

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

  • 建筑企业如何纳税
  • 外地预缴税金
  • 食用油交不交消费税
  • 无形资产开发阶段计入什么科目
  • 税控盘费用抵扣
  • 未开票收入下月开票怎么报税
  • 一般纳税人普票怎么做分录
  • 折旧已经计提完的固定资产如何盘点
  • 无形资产除了专利还有什么
  • 施工企业实验用具费用计入什么科目
  • 部门独立核算管理制度
  • 金税盘在电脑上怎么打开
  • 租赁合同印花税双方都要交吗
  • 增值税适用范围和税率
  • 在建工程转固定资产当月提折旧吗?
  • 证券投资基金管理人的职权
  • 研发费用费用化金额和资本化金额有什么区别
  • 政府减免税款如何做账
  • 材料成本差异率要算发出材料吗
  • 物业公司收取电费加价依据
  • 解决的英文
  • 北大新闻传播学院副院长
  • mac怎么更换默认打开方式
  • deepin隐藏分区
  • win10粘贴复制无效
  • soft version
  • PHP:pg_lo_truncate()的用法_PostgreSQL函数
  • excel js宏
  • 材料委托加工
  • 事业单位包含哪些
  • nfcmp3
  • 命令行基础
  • 存货的盘亏损毁和报废
  • 现金流量表 科目
  • $ajax请求
  • php下载文件到指定目录
  • ls -all命令
  • 发票明细怎么导出数量
  • 红字写信是什么意思
  • 真发票假业务会坐牢吗
  • 房屋维修费属于什么税收分类编码
  • Linux下MySQL卸载和安装图文教程
  • 一般纳税人超过多少要交税
  • 调整汇兑损益的摘要怎么写?
  • 印花税怎么计提记账
  • 收到保险公司退款
  • 呆账冲销是什么意思
  • 初始化流程
  • 定期定额纳税申报表计税依据怎么填
  • 运动会活动奖品
  • 长期待摊费用为什么属于资产
  • 长期股权投资成本法转权益法例题
  • 应收账款的客户如何分析
  • 制造费用可以计提吗
  • 现金支付的范围包括
  • 代扣代缴的个人所得税在现金流量表
  • 个人独资企业的投资人以其个人财产对企业债务承担
  • 应付暂估余额很大怎么办
  • 汽车4s店费用预算
  • mysql官方监控工具
  • sql语句汇总数据
  • 数据库的常用语句
  • sql server?
  • 浅谈mysql explain中key_len的计算方法
  • 繁体系统安装简体软件
  • win8旗舰版和专业版区别
  • Ubuntu系统怎么设置双屏
  • ubuntu下安装deb文件
  • 0x81000204错误
  • linux命令eof
  • windows7怎么关不了机怎么办
  • windows10禁用独立显卡
  • linux删除文件语句
  • javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
  • unity异步加载场景
  • python ping检测
  • html5videojs
  • python怎么处理json数据
  • 增值税税率最新
  • 购买烟叶要交烟税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设