javascript arguments使用示例


Posted in Javascript onDecember 16, 2014
<script Language="JavaScript">

//第一个参数值. 

function test(a,b,c,d){ 

  alert(arguments[0]); 

} 

//arguments[0]实际上就是a,同理,arguments[1]就是b,依次c,d

</script>

 
 <script Language="JavaScript">

{

    function function_Name(exp1,exp2,exp3,exp4)

    {

        var umber="";

        umber=arguments.length;

        alert(umber);

    }

            function_Name('a','b','c','d');         都可以调用

        //    function_Name("a","b","c","d");     都可以调用

}

</script>

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

 Array.prototype.testArg = "test";

 function funcArg() {

     alert(funcArg.arguments.testArg);  

     alert(funcArg.arguments[0]);

 }

 alert(new Array().testArg); // result: "test"

 funcArg(10);                // result: "undefined"  "10"

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

 function f(a, b, c){

     alert(arguments.length);   // result: "2"

     a = 100;

     alert(arguments[0]);       // result: "100"

     arguments[0] = "qqyumidi";

     alert(a);                  // result: "qqyumidi"

     alert(c);                  // result: "undefined"

     c = 2012;

     alert(arguments[2]);       // result: "undefined"

 }

 f(1, 2);

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

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

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

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

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

 function f(a){

     return a + 10;

 }

 function f(a){

     return a - 10;

 }

 // 在不考虑函数声明与函数表达式区别的前提下,其等价于如下

 var f = function(a){

     return a + 10;

 }

 var f = function(a){

     return a - 10;

 }

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

如下:

 function count(a){

     if(a==1){

         return 1;

     } 

     return a + arguments.callee(--a);

 }

 var mm = count(10);

 alert(mm);
Javascript 相关文章推荐
如何使用jquery动态加载js,css文件实现代码
Apr 03 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
May 13 Javascript
JavaScript在IE和FF下的兼容性问题
May 19 Javascript
深入分析JSON编码格式提交表单数据
Jun 25 Javascript
js实现图片上传并正常显示
Dec 19 Javascript
延时加载JavaScript代码提高速度
Dec 27 Javascript
微信开发 使用picker封装省市区三级联动模板
Oct 28 Javascript
javascript闭包的使用之按钮切换功能
Aug 30 Javascript
微信小程序授权登录及解密unionId出错的方法
Sep 26 Javascript
使用pm2自动化部署node项目的方法步骤
Jan 28 Javascript
vue+element 模态框表格形式的可编辑表单实现
Jun 07 Javascript
Ajax请求时无法重定向的问题解决代码详解
Jun 21 Javascript
javascript实现日期格式转换
Dec 16 #Javascript
javascript实现禁止复制网页内容
Dec 16 #Javascript
node.js中的fs.rmdirSync方法使用说明
Dec 16 #Javascript
node.js中的fs.rmdir方法使用说明
Dec 16 #Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
Dec 16 #Javascript
node.js中的fs.fchownSync方法使用说明
Dec 16 #Javascript
node.js中的fs.fchown方法使用说明
Dec 16 #Javascript
You might like
带密匙的php加密解密示例分享
2014/01/29 PHP
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
js中获取 table节点各tr及td的内容简单实例
2016/10/14 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
2016/11/16 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
基于Vue框架vux组件库实现上拉刷新功能
2017/11/28 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
Openlayers显示地理位置坐标的方法
2020/09/28 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
Python常用库推荐
2016/12/04 Python
Python操作SQLite数据库的方法详解
2017/06/16 Python
Python列表推导式与生成器表达式用法示例
2018/02/08 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
房地产融资计划书
2014/01/10 职场文书
预备党员转正考核材料
2014/06/03 职场文书
中层干部培训方案
2014/06/16 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
项目委托协议书(最新)
2014/09/13 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
工程技术员岗位职责
2015/04/11 职场文书
2016公司年会通知范文
2015/04/25 职场文书
党员个人承诺书
2015/04/27 职场文书
教师培训简讯
2015/07/20 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python
Python Django获取URL中的数据详解
2021/11/01 Python