位置: 编程技术 - 正文

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

  • 一次性购入固定资产投资收益
  • 企业中秋晚会活动方案
  • 预缴税款是什么科目
  • 食堂辅助帐怎么记帐
  • 给个体工商户打工不发工资怎么办
  • 非居民劳务个税怎么计算
  • 淘宝发票收取的税点是谁来交
  • 投资收益分红需要交企业所得税吗
  • 税金及附加包括什么
  • 个税的专项扣除包括哪些内容
  • 领用低值易耗品的记账凭证
  • 房地产开发企业资质等级有几个
  • 出售使用过的生产设备
  • 转让折旧怎么算
  • 出口退税的发票怎么做账
  • 补入库存商品的会计分录
  • 房地产开发桩基施工方案
  • 土地流转承包费拖欠
  • 去年税收滞纳金是个人缴的,用做账嘛
  • 开票不走公户
  • 投资收益如何做账
  • 居民委员会有没有纳税人识别号吗
  • 小规模企业资本结构
  • 政府奖励如何记账
  • 开具的服务费怎么做分录
  • 发票备注栏填写要求
  • 怎么光驱重装系统
  • 如何压缩文件打包发送微信
  • php简单实例
  • wordpress常用api
  • win11桌面右键失效
  • php数组函数 菜鸟
  • 出口退税如何办退税手续
  • 绩效奖个人所得怎么算
  • 利润增减幅度
  • 微信小程序插件有哪些
  • php cmd
  • 新准则与旧准则比较有哪些新变化
  • 报销差旅费的会计分录为什么是其他应收款
  • ValueError: The device should not be ‘gpu‘, since PaddlePaddle is not compiled with CUDA问题解决(Paddle)
  • php如何实现
  • 招待费专票可以抵扣进项吗
  • JavaScript charCodeAt() 方法
  • 微信小程序项目中的 ______ 文件是全局配置文件
  • 学前端的可以是什么专业的
  • 企业对外投资资产的成本可以税前扣除吗
  • c++怎么创建文件夹
  • 用友软件年度结转操作步骤
  • 企业可以将自己辞退吗
  • 新开办公司如何办理金税盘
  • 茶叶开一般发票(非增值税发票)是多少个点的?
  • sql数据库移动
  • 应付现金股利属于什么账户
  • mysql创建存储过程sql语句
  • 已付预付款当月怎么入账
  • 信用卡的还款方式怎么查
  • 个税系统里的免税收入怎么填
  • 固定资产未转固属于什么问题
  • 收款人是否应当承担还款责任
  • 为什么设置辅警
  • 异地缴纳增值税和附加税的区别
  • 现金支出业务的流程步骤包括
  • sqlserver 字符串包含
  • mac电脑怎么打开
  • win8.1 升级
  • Win10预览版怎么变回正式版
  • win7不能运行应用程序的方法
  • linux 卸载 mysql
  • 计算机图形学考研院校
  • bootstrap怎样为进度条添加动画
  • 移动手机指令
  • 批处理命令在哪个菜单中
  • css如何用
  • c#程序例子
  • javascript怎么设置字体大小
  • 安卓下载手游
  • jquery mobile 图片滑动
  • 境外投资收益如何交税
  • 注销发票怎么处理流程
  • 货车附加费多少钱
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设