深入浅析JavaScript中的arguments对象(强力推荐)


Posted in Javascript onJune 03, 2016

1、在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。arguments非常类似Array,但实际上又不是一个Array实例。可以通过如下代码得以证实(当然,实际上,在函数funcArg中,调用arguments是不必要写成funcArg.arguments,直接写arguments即可)。

Array.prototype.testArg = "test";
function funcArg() {
alert(funcArg.arguments.testArg); 
alert(funcArg.arguments[]);
}
alert(new Array().testArg); // result: "test"
funcArg(); // result: "undefined" ""

2、arguments对象的长度是由实参个数而不是形参个数决定的。形参是函数内部重新开辟内存空间存储的变量,但是其与arguments对象内存空间并不重叠。对于arguments和值都存在的情况下,两者值是同步的,但是针对其中一个无值的情况下,对于此无值的情形值不会得以同步。如下代码可以得以验证。

function f(a, b, c){
alert(arguments.length); // result: ""
a = ;
alert(arguments[]); // result: ""
arguments[] = "qqyumidi";
alert(a); // result: "qqyumidi"
alert(c); // result: "undefined"
c = ;
alert(arguments[]); // result: "undefined"
}
f(, );

3、由JavaScript中函数的声明和调用特性,可以看出JavaScript中函数是不能重载的。

根据其他语言中重载的依据:"函数返回值不同或形参个数不同",我们可以得出上述结论:

第一:Javascript函数的声明是没有返回值类型这一说法的;

第二:JavaScript中形参的个数严格意义上来讲只是为了方便在函数中的变量操作,实际上实参已经存储在arguments对象中了。

另外,从JavaScript函数本身深入理解为什么JavaScript中函数是不能重载的:在JavaScript中,函数其实也是对象,函数名是关于函数的引用,或者说函数名本身就是变量。对于如下所示的函数声明与函数表达式,其实含以上是一样的(在不考虑函数声明与函数表达式区别的前提下),非常有利于我们理解JavaScript中函数是不能重载的这一特性。

function f(a){
return a + ;
}
function f(a){
return a - ;
}
// 在不考虑函数声明与函数表达式区别的前提下,其等价于如下
var f = function(a){
return a + ;
}
var f = function(a){
return a - ;
}

4、arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。

如下:

function count(a){
if(a==){
return ;
} 
return a + arguments.callee(--a);
}
var mm = count();
alert(mm);

以上所述是小编给大家介绍的JavaScript中的arguments对象,希望对大家有所帮助,如果大家在参考过程中发现有任何疑问请给我留言,小编会及时回复大家的,在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery实现点击TreeView文本父节点展开/折叠子节点
Jan 10 Javascript
原生Javascript封装的一个AJAX函数分享
Oct 11 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
Jan 13 Javascript
javascript常用方法总结
May 14 Javascript
jQuery的position()方法详解
Jul 19 Javascript
js实现索引图片切换效果
Nov 21 Javascript
原生js实现addClass,removeClass,hasClass方法
Apr 27 Javascript
JavaScript实现二分查找实例代码
Feb 22 Javascript
js 索引下标之li集合绑定点击事件
Jan 12 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
Aug 08 Javascript
深入理解移动前端开发之viewport
Oct 19 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
Nov 05 Javascript
JS中使用变量保存arguments对象的方法
Jun 03 #Javascript
jQuery+ajax简单实现文件上传的方法
Jun 03 #Javascript
JS使用eval()动态创建变量的方法
Jun 03 #Javascript
jQuery插件编写步骤详解
Jun 03 #Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
Jun 03 #Javascript
JSON字符串转换JSONObject和JSONArray的方法
Jun 03 #Javascript
JS判断字符串变量是否含有某个字串的实现方法
Jun 03 #Javascript
You might like
浅析PHP 按位与或 (^ 、&)
2013/06/21 PHP
php的$_FILES的临时储存文件与回收机制实测过程
2013/07/12 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
JQuery结合CSS操作打印样式的方法
2013/12/24 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
Javascript字符串拼接小技巧(推荐)
2016/06/02 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
python检测lvs real server状态
2014/01/22 Python
Python OS模块常用函数说明
2015/05/23 Python
举例区分Python中的浅复制与深复制
2015/07/02 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
用Python实现职工信息管理系统
2020/12/30 Python
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
环法自行车赛官方商店:Le Tour de France
2017/08/27 全球购物
DELPHI面试题研发笔试试卷
2015/11/08 面试题
应届大学生自荐信格式
2013/09/21 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
文秘应届生求职信
2014/07/05 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
幼儿园大班毕业评语
2014/12/31 职场文书
干部考核工作总结2015
2015/07/24 职场文书
我的生日感言
2015/08/03 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
基于Redis延迟队列的实现代码
2021/05/13 Redis