位置: 编程技术 - 正文

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

  • 房产税会计分录怎么做
  • 贷款取现金
  • 所得税优惠政策最新2022
  • 停车费增值税税率
  • 电子税务局如何删除办税人员
  • 赠送代金券的广告语
  • 核定征收一般纳什么税
  • 专票没有抵扣联可以作废吗
  • 填专项扣除对个人还是公司受益
  • 往来款项包括什么
  • 无票收入是否要交税
  • 小规模纳税人小微企业免税销售额
  • 隔月发票红冲,交税怎么交
  • 个人所得税该如何缴纳
  • 印花税 企业
  • 所得税清算时坏账怎么算
  • 劳务费个人所得税税率表2023最新
  • 增值税扣税凭证抵减销项税额
  • 建筑安装施工过程
  • 创建上市公司
  • 残保金属于现金流量表中的哪一项
  • 计算应纳税所得额时可以扣除的项目有
  • 在windows中,经常有一些菜单选项呈暗灰色
  • 什么是电子发票图片
  • 公司暂估成本过高,如何处理
  • 小规模开票运费怎么开
  • 购买现金支票的工本费计入什么科目
  • 腾讯电脑管家中蓝牙在哪
  • 事业单位需要交企业所得税吗
  • window10安装教程u盘
  • win11资源管理器卡死
  • winpe怎么安装到u盘
  • neoCapture.exe - neoCapture是什么进程 有什么用
  • 外币账户收到应收账款
  • 上月多计提的税金及附加怎么办
  • 期间费用核算内容包括
  • 46 个非常有用的成语
  • array php
  • 命令行查看ip地址
  • 建筑工程增值税怎么算
  • 处置子公司的方式
  • 自动驾驶的时候可以睡觉吗
  • 合同内容和开票内容不一致
  • springboot用法
  • 遥感图像超分辨率 坑
  • typescript中文文档
  • 金税盘税控盘和税务Ukey有什么区别
  • ajax json请求
  • 工程施工科目借方尾差怎么调整
  • 财务报表编制要求包含
  • 个税返还款增值税税率
  • 销售提成如何入账
  • 服务合同开什么发票
  • 以前年度损益调整怎么做账
  • 营改增后建筑业怎么开票
  • 商贸企业增值税税率是多少
  • 现金发放工资有什么风险
  • 不同税率的产品可以开在同一张发票上吗
  • 现金流量表和利润表的勾稽关系
  • 其他应收怎么转收入
  • sqlserver2000怎么用
  • mac安装mysql没看见初期密码
  • 懒癌患者如何自救
  • 将IBM ServeRAID 8i卡的驱动整合到Win2003安装光盘里
  • 对Windows Server 2008系统自带的磁盘分区进行无损分区的教程图文介绍
  • vmware安装macos10.15
  • windows中alt+tab
  • linux系统中make的用法
  • win7win8双系统怎么装
  • 如何除掉
  • unity 调用java
  • 原生js import
  • 安卓版影音播放器哪个好用
  • 一起学ap
  • jq获取form表单数据
  • unity保存项目
  • python多线程异常后所有线程均不往下执行
  • 详解js跨域原理是什么
  • 税务工会费缴费标准
  • 中国地税国税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设