深入浅析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 相关文章推荐
Prototype RegExp对象 学习
Jul 19 Javascript
JS 按钮点击触发(兼容IE、火狐)
Aug 07 Javascript
jQuery 取值、赋值的基本方法整理
Mar 31 Javascript
jquery复选框checkbox实现删除前判断
Apr 20 Javascript
jQuery中after()方法用法实例
Dec 25 Javascript
javascript实现滑动解锁功能
Dec 31 Javascript
28个常用JavaScript方法集锦
Jan 14 Javascript
Bootstrap 组件之按钮(二)
May 11 Javascript
深入浅析JavaScript中的3DES
Aug 24 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
Jan 09 Javascript
vue2.0 循环遍历加载不同图片的方法
Mar 06 Javascript
小程序input数据双向绑定实现方法
Oct 17 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通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
图片按比例缩放函数
2006/06/26 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
js小数计算小数点后显示多位小数的实现方法
2016/05/30 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
python创建进程fork用法
2015/06/04 Python
一个Python最简单的接口自动化框架
2018/01/02 Python
python多线程之事件Event的使用详解
2018/04/27 Python
python3+requests接口自动化session操作方法
2018/10/13 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
Spark处理数据排序问题如何避免OOM
2020/05/21 Python
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
荷兰超市:DEEN
2018/03/14 全球购物
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
会计系中文个人求职信
2013/12/24 职场文书
企业管理毕业生求职信
2014/03/11 职场文书
小学语文教研活动总结
2014/07/01 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
领导班子作风建设剖析材料
2014/10/11 职场文书
企业投资意向书
2015/05/09 职场文书
趣味运动会广播稿
2015/08/19 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书