位置: 编程技术 - 正文

跟我学习javascript的arguments对象(java script教程)

编辑:rootadmin

推荐整理分享跟我学习javascript的arguments对象(java script教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:教程java,java script入门,java script入门,java script,java script教程,java script,java教程,java script,内容如对您有帮助,希望把文章链接给更多的朋友!

1、什么是arguments

arguments 是是JavaScript里的一个内置对象,它很古怪,也经常被人所忽视,但实际上是很重要的。所有主要的js函数库都利用了arguments对象。所以agruments对象对于javascript程序员来说是必需熟悉的。在javascript函数体内,标识符arguments具有特殊含义。它是调用对象的一个特殊属性,用来引用Arguments对象。Arugments对象就像数组,注意这里只是像并不是哈。

javascript函数体内,arguments像数组(并不是真的数组,是一个Arguments对象,再次强调)一样,有length属性,可以代表传给函数的参数的个数。

javascript中Arguments对象是函数的实际参数,arguments对象的长度是由实参个数而不是形参个数决定的。形参是函数内部重新开辟内存空间存储的变量,但是其与arguments对象内存空间并不重叠。

js不会主动为你判断你到底给函数传了多少个参数,如果你多传了,多余的部分就没有被使用,如果你少传了,那么没传的参数值就是undefined.所以我们可以借助arguments的length属性来检测调用函数时是否使用了正确数目的实际参数,因为javascript是不会为你做这些事的

2、arguments创建可变参数列表函数

arguments还为我们提供了这样一种可能,就是为一个函数传任意数目的实际参数:

比如说,我想用一个display()函数来计算每个公司的员工工资总额,对,没错,你传多少参数都行,但是前提是你要传数字,因为我在函数内部懒得判断了。

怎么样?这个方法很巧妙吧?

说明一下arguments与真正传的形式参数是一致的:

对于arguments和值都存在的情况下,两者值是同步的改变其中一个值,即改变了二者所有的值

3、永远不要修改arguments对象

函数中声明的参数和arguments之间的联系很脆弱,每个声明的参数实际上只是对arguments对象中对应位置的一个引用。

值得注意的是,在ES5的strict mode中,函数声明的参数并不会引用arguments:

正因为在strict和非strict模式下,函数声明的参数和arguments的关系不一致,所以为了避免出现问题,不去修改arguments对象才是最安全的做法。

跟我学习javascript的arguments对象(java script教程)

如果确实需要修改arguments对象,那么可以首先赋值一份arguments对象:

var args = [].slice.call(arguments);当slice方法不接受任何参数的时候,就会执行复制操作,得到的args也是一个真正的数组对象。同时,args和函数声明的参数之间也没有任何联系了,对它进行操作是安全的。

4、一个变量来保存arguments的引用

假设需要一个API用来遍历若干元素,像下面这样:

相应的实现可以是:

但是执行的实际情况却是:

原因在于:对于arguments对象的赋值是隐式完成的。在next方法内部,使用了arguments,然而此arguments和values方法开始处的arguments并不是一个对象。这里的arguments对象是函数next()的。

解决方法也很简单,就是将需要访问的arguments使用另外一个变量进行引用。然后通过闭包的性质在其嵌套的函数中进行访问就可以了,像下面这样:

5、arguments对象的callee属性:

arguments的callee属性是用来引用当前正在执行的函数,这对未命名的函数调用自身非常有好处。

首先用命名函数表达式实现递归的函数:

那里面,我提到可以为函数直接量以函数名。这样实现递归可以很方便的调用自己。

现在用arguments的这个callee同样可以简单的实现

在最后提醒大家一点,既然这个arguments这么厉害,那么我们就不要为变量命名为arguments了,事实上arguments是javascript的保留字之一。嗯。

最后补充一点:

区别caller

返回一个对函数的引用,该函数调用了当前函数。

- functionName.caller - functionName 对象是所执行函数的名称。

对于函数来说,caller 属性只有在函数执行时才有定义。如果函数是由顶层调用的,那么 caller 包含的就是 null 。如果在字符串上下文中使用 caller 属性,那么结果和 functionName.toString 一样,也就是说,显示的是函数的反编译文本。

代码:

标签: java script教程

本文链接地址:https://www.jiuchutong.com/biancheng/384626.html 转载请保留说明!

上一篇:js实现获取div坐标的方法(js获取div下指定元素的值)

下一篇:跟我学习javascript的undefined与null(java script课程)

  • 查账征收纳税申报表
  • 如何确定开票税率是否正确
  • 什么是价外税价外税有哪些
  • 税务行政处罚是指
  • 出口退税的账怎么做
  • 一个月没有账务往来,现金日记账如何登记?
  • 免税收入不征税收入有哪些
  • 商铺属于固定资产还是无形资产
  • 个人话费发票怎么入账
  • 小规模纳税人免税账务处理
  • 固定资产盘亏计入什么科目
  • 收到工程服务费会计分录
  • 年报现金流量表可以不填吗
  • 银行日记账必须一年一本吗
  • 电子发票红字发票怎么开
  • 借款超期不还利息的法律规定
  • 建筑清包工的账务处理
  • 用公户付了一笔款怎么办
  • 简易计税是否可以开增值税专用发票
  • 单位给员工买车怎么买
  • 增值税怎么勾选
  • ktv的发票可以报销吗
  • 加工费月底需要全部结转吗
  • 企业银行存款账户核算的内容有
  • 物流公司进项票多了,可以帮人开票吗
  • 税务罚款计入哪个会计科目
  • 材料的盘点包括
  • win11插耳机没声音
  • ghost恢复方法
  • 所得税贷款利息扣除
  • OfcPfwSvc.exe - OfcPfwSvc是什么进程 有什么用
  • php显示文件目录及路径
  • 税前扣除凭证管理办法第九条称小额零星支出是
  • PHP:mdecrypt_generic()的用法_Mcrypt函数
  • php标识符
  • PHP:imagepsencodefont()的用法_GD库图像处理函数
  • 存货出入库的账务处理
  • gpt详解
  • php图文教程
  • 以前年度损益调整结转到哪里
  • 工程结算结算gbq文件怎么做
  • 举报民间借贷利息收入所得税
  • wordpress!
  • 分享帝国cms首页在哪
  • 一般纳税人销售旧货适用征收率是?
  • 总公司签合同开票分公司做业务分公司如何确认收入?
  • 银行会计核算方法的特点
  • 开矿泉水发票怎么开?
  • sql2008强制还原数据库
  • 购买银行理财产品安全吗
  • 资本公积账务处理办法
  • 对外支付3万美元怎么算
  • 收到对方公司退款
  • 蔬菜销售方式
  • 纳税人购进国内商品
  • 新会计准则应用
  • 通过实例认识MySQL中前缀索引的用法
  • 64位Win10系统安装Mysql5.7.11的方法(案例详解)
  • wmiex.exe是什么程序
  • win7经常自动重启是什么原因
  • win8.1的开始菜单在哪
  • 苹果电脑mac系统键盘无法找到
  • 晨枫U盘启动工具v2.0
  • win10周年纪念版
  • ubuntu如何启动
  • windows用户如何添加新用户账户信息
  • 如何让xp系统崩溃
  • linux系统命令包含在哪个目录中
  • win10内置管理员账户禁用
  • perl uc,lc,ucfirst,lcfirst大小写转换函数
  • unity3d怎么删除模型
  • css示范例子
  • jQuery使用ajax方法解析返回的json数据功能示例
  • jquery使用教程
  • jsonobject java
  • 河南省国家税务总局网站
  • 税务部门协作
  • 税务局随机抽查事项清单
  • 郑州金水区税务大厅电话
  • 为什么我电脑登微信显示二维码失效
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设