位置: 编程技术 - 正文

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

  • 农民专业合作社章程模板
  • 所得税的会计分录怎么做
  • 进项税跟增值税
  • 费用计入什么会计科目
  • 如何确定固定资产的计税基础
  • 购货方收到红字发票
  • 两个金税盘能用一个系统
  • 融资租赁公司收购要求
  • 可转换公司债券属于哪一类金融资产
  • 资产负债表要素包括几项
  • 固定资产公允价值减去处置费用后的净额
  • 物业公司收取供热管道内网的维护费用合理吗
  • 计提个税会计分录怎么理解
  • 免抵退税的账务处理
  • 医院的重要性
  • 负数发票需要抵扣吗
  • 非独立核算的分公司是什么意思
  • 开一张增值税发票需要交哪些税
  • 发票已入账跨年可以红冲重开吗
  • 辞退福利应该计入什么科目
  • 出口退免税是什么意思
  • 小规模纳税人需要汇算清缴吗
  • 向境外企业转让房产
  • 分期收款销售的核算中发出商品时借什么账户
  • 增值税专用发票的税率是多少啊
  • 支付短期借款利息
  • 工资薪金所得税率表2023
  • 金融负债包括哪几项
  • 物业公司营业成本包括哪些
  • 转包工程款怎么结算
  • 旅游服务业账务处理办法
  • 厂商退货款差额怎么算
  • 会计分录错误用什么方法更正
  • linux中ls命令的意思
  • PHP:mb_detect_encoding()的用法_mbstring函数
  • intempt
  • php云盘源码
  • thinkphp6依赖注入
  • 商业模式诠释了一个企业如何赚钱
  • 核销对哪些单据对应关系进行的操作
  • 结转成本的会计科目
  • 织梦怎么安装
  • 租赁公司一般都有什么税
  • 筹建养老院国家有哪些优惠政策?
  • 新成立小规模纳税人税收优惠政策
  • 附加税减免计入什么科目
  • 期权费如何入账
  • 费用暂估入账后期如何冲销
  • 销售折让的会计分录怎么做
  • 如何冲减计提费用
  • 贷款的融资担保费
  • 以前年度多计提的税金怎么调整
  • 用SQL脚本读取Excel中的sheet数量及名称的方法代码
  • Ubuntu下MySQL安装及配置远程登录教程
  • mysql使用入门教程视频
  • 怎么用老毛桃u盘装win7系统 老毛桃u盘装win7系统教程图解
  • task运行在哪个工作单元
  • windows2008
  • windows有两个
  • linux的文件和目录的区别
  • linux的用户
  • win8的显示设置
  • vim配置语法高亮
  • linux将文本写入文件
  • ExtJS 2.0实用简明教程 之ExtJS版的Hello
  • perl脚本输出变量
  • json对象如何取值
  • jquery给表格赋值
  • css如何用
  • js 函数写法
  • jstree异步加载
  • javascript教程
  • 判断页面是关闭还是开启
  • jquery遍历json对象
  • fragment详解
  • python flask
  • 税务局把我拉入黑名单了怎么办
  • 开票金额有限额吗
  • 注册一个信息咨询公司需要什么
  • 经纪代理服务税率是多少 1%
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设