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 相关文章推荐
JavaScript事件列表解说
Dec 22 Javascript
JS实现很酷的EMAIL地址添加功能实例
Feb 28 Javascript
使用jspdf生成pdf报表
Jul 03 Javascript
js随机生成字母数字组合的字符串 随机动画数字
Sep 02 Javascript
JS组件Bootstrap导航条使用方法详解
Apr 29 Javascript
json的结构与遍历方法实例分析
Apr 25 Javascript
微信小程序实现锚点定位楼层跳跃的实例
May 18 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
Nov 01 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
Oct 09 Javascript
vue 中 beforeRouteEnter 死循环的问题
Apr 23 Javascript
vue中使用rem布局代码详解
Oct 30 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
Dec 01 Vue.js
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类的反射来实现依赖注入过程
2018/02/06 PHP
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
js控制table合并具体实现
2014/02/20 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
基于jQuery的checkbox全选问题分析
2016/11/18 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
详解vue2父组件传递props异步数据到子组件的问题
2017/06/29 Javascript
使用JS动态显示文本
2017/09/09 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
jQuery编写QQ简易聊天框
2020/08/27 jQuery
Vue实现简易购物车页面
2020/12/30 Vue.js
python操作xml文件详细介绍
2014/06/09 Python
python解析xml文件实例分析
2015/05/27 Python
Python实例一个类背后发生了什么
2016/02/09 Python
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
python虚拟环境完美部署教程
2019/08/06 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
印度尼西亚最完整和最大的在线药房网站:Farmaku.com
2019/11/23 全球购物
医学专业个人求职自荐信格式
2013/09/23 职场文书
学生自我鉴定范文
2013/10/04 职场文书
好军嫂事迹材料
2014/01/15 职场文书
制药工程专业职业生涯规划范文
2014/03/10 职场文书
班干部演讲稿
2014/04/24 职场文书
王亚平太空授课观后感
2015/06/12 职场文书
单位证明范文
2015/06/18 职场文书
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
你知道Java Spring的两种事务吗
2022/03/16 Java/Android