深入浅析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 技巧和窍门整理(8个)
Apr 22 Javascript
javascript实现在线客服效果
Jul 15 Javascript
JS+CSS实现简易实用的滑动门菜单效果
Sep 18 Javascript
jQuery ajax提交Form表单实例(附demo源码)
Apr 06 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
Oct 24 Javascript
微信小程序 开发之快递查询功能的实现
Jan 09 Javascript
jQuery中Chosen三级联动功能实例代码
Mar 07 Javascript
js下载文件并修改文件名
May 08 Javascript
页面间固定参数,通过cookie传值的实现方法
May 31 Javascript
使用gulp构建前端自动化的方法示例
Dec 25 Javascript
微信小程序中weui用法解析
Oct 21 Javascript
vue实现购物车案例
May 30 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开源建站平台小结
2010/04/22 PHP
php SQL Injection with MySQL
2011/02/27 PHP
php的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
php操作xml
2013/10/27 PHP
PHP正则表达式入门教程(推荐)
2016/05/18 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
Jquery实现视频播放页面的关灯开灯效果
2013/05/27 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
jQuery中innerHeight()方法用法实例
2015/01/19 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
打造自己的jQuery插件入门教程
2016/09/23 Javascript
微信小程序入门教程
2016/11/18 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
vue中appear的用法
2017/08/17 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
Node.js之readline模块的使用详解
2019/03/25 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
Python中atexit模块的基本使用示例
2015/07/08 Python
python图像常规操作
2017/11/11 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
python IP地址转整数
2020/11/20 Python
python中slice参数过长的处理方法及实例
2020/12/15 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
EJB发布WEB服务一般步骤
2012/10/31 面试题
测绘工程专业个人自我评价
2013/12/01 职场文书
前厅部经理岗位职责范文
2014/02/04 职场文书
教师节演讲稿
2014/05/06 职场文书
天气温馨提示语
2015/07/14 职场文书
小学远程教育工作总结
2015/08/13 职场文书
用Python实现Newton插值法
2021/04/17 Python
springboot用户数据修改的详细实现
2022/04/06 Java/Android