javascript 利用arguments实现可变长参数
javascript arguments解释,实现可变长参数。
在C#中,有可变长参数params[],但是在js中,如何实现这种可变参数呢?
一、可变长参数
arguments是非常好的解决方法,一直不知道javascript有这个东西。
先来看看应用场景,使用arguments传入任意个数的参数到js函数里的写法。
function Test() { console.log(arguments[0]); console.log(arguments[1]); console.log(arguments[2]); }; Test(1, 2, 3);
输出 1 2 3;
当然,你也可以在javascript函数里放一个数组,但是它是固定长度的。
二、不要直接修改arguments对象
arguments对象类似于数组,但实际上它也并不是数组,使用call方法,可能将数组的shift函数用到它身上,但是尽量不要尝试去改动arguments。很容易造成混乱。
如果确实要修改,可以将arguments的内容复制到一个新数组上,然后在新数组上进行修改。
var args = [].slice.call(arguments);
用变量绑定arguments,实现跨函数访问
arguments变量是被隐式绑定到每个函数体内的,注意是每一个函数内部。
一个迭代器的例子能够说明这个问题;
function values() { //values有自己的arguments var i = 0, n = arguments.length; return { hasNext: function () { return i < n; //hasNext 有自己的arguments }, next: function () { if(i >= n) { throw new Error("已经是最后一个元素!"); } return arguments[i++]; //next 有自己的arguments } } } var it = values(1, 2, 3, 4, 5, 6, 7); console.log(it.next()); //undefined console.log(it.next()); //undefined console.log(it.next()); //undefined
如果要访问外层函数的arguments,那么只能通过局部变量绑定的方式,在内层就能够访问,上面的例子可以改造成
function values() { //values有自己的arguments var i = 0, n = arguments.length, ourterArgs = arguments; return { hasNext: function () { return i < n; //hasNext 有自己的arguments }, next: function () { if(i >= n) { throw new Error("已经是最后一个元素!"); } return ourterArgs[i++]; //ourterArgs 外层保存的 arguments } } } var it = values(1, 2, 3, 4, 5, 6, 7); console.log(it.next()); //1 console.log(it.next()); //2 console.log(it.next()); //3
以上所述是本文的全部内容,希望对大家有所帮助,谢谢对我们的支持!
相关推荐
-
linux bash中too many arguments问题的解决方法
判断一个文件的内容是不是为空,使用语句: if test -z `cat filename` 当filename为空或者只有一行没有空格的字符串的时候,一切正常,反之,则会报:too many arguments,甚至是: binary operator expected之类的错误. 参考文章:http://www.ibm.com/developerworks/cn/linux/shell/bash/bash-2/index.html 原因分析:filename中的空格回车等迷惑了bash.如果
-
Javascript中函数名.length属性用法分析(对比arguments.length)
本文实例分析了Javascript中函数名.length属性用法.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"&g
-
js中arguments的用法(实例讲解)
如下所示: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8&qu
-
JS中使用变量保存arguments对象的方法
迭代器(iterator)是一个可以顺序存取数据集合的对象.其一个典型的API是next方法.该方法获得序列中的下一个值. 迭代器示例 题目:希望编写一个便利的函数,它可以接收任意数量的参数,并为这些值建立一个迭代器. 测试代码好下: var it=values(,,,,,,,,); it.next();// it.next();// it.next();// 分析:由于values函数需要接收任意多个参数,这里就需要用到上一节讲到的构建可变参数的函数的方法.然后里面的迭代器对象来遍历argum
-
Javascript中的arguments对象
在js中一切都是对象,连函数也是对象,函数名其实是引用函数定义对象的变量. 1.什么是arguments? 这个函数体内的arguments非常特殊,实际上是所在函数的一个内置类数组对象,可以用数组的[i]和.length. 2.有什么作用? js语法不支持重载!但可用arguments对象模拟重载效果. arguments对象:函数对象内,自动创建的专门接收所有参数值得类数组对象. arguments[i]: 获得传入的下标为i的参数值 arguments.length: 获得传入的参数个数!
-
JavaScript中使用arguments获得函数传参个数实例
JS与PHP在函数传参方面有点不同,PHP形参与实参个数要匹配,而JS就灵活多了,可以随意传参,实参比形参少或多都不会报错. 实参比形参多不会报错 function say(a){ alert(a); } say('琼台博客','WEB技术博客'); 执行结果 我们再来看看形参比实参多的结果 function say(a,b){ alert('a 的值是 '+a+'\nb 的值是 '+b); } say('琼台博客'); 执行结果 a 对应第一个实参"琼台博客",b
-
js的隐含参数(arguments,callee,caller)使用方法
在提到上述的概念之前,首先想说说javascript中函数的隐含参数: arguments arguments 该对象代表正在执行的函数和调用它的函数的参数.[function.]arguments[n]参数function:选项.当前正在执行的 Function 对象的名字. n :选项.要传递给 Function 对象的从0开始的参数值索引.说明Arguments是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象.Arguments是一个类似数组但不是数组的对象,说它类似数组是因为
-
js arguments,jcallee caller用法总结
关键字:arguments,callee,callerarguments:表示传入函数的参数callee:表示函数和函数主体的语句caller:表示调用该函数的函数arguments 该对象代表正在执行的函数和调用它的函数的参数. caller 返回一个对函数的引用,该函数调用了当前函数.functionName.callerfunctionName 对象是所执行函数的名称. 说明对于函数来说,caller属性只有在函数执行时才有定义.如果函数是由顶层调用的,那么 caller包含的就是 nul
-
arguments对象验证函数的参数是否合法
使用arguments对象验证函数的参数是否合法 <script> function sum(arg1,arg2) //加法函数 { var realArgCount = arguments.length; //调用函数时传递的实参个数 var frmArgCount = sum.length; //函数定义时的形参个数 if(realArgCount < frmArgCount) //如果实际参数个数小于形参个数 { var e = new Error(); //定义错误信息,然后抛出
-
window.dialogArguments 使用说明
f1.php页面JS代码,第二个传的参数必须是self不能是别的 复制代码 代码如下: <script type="text/javascript"> function dianJi(){ //弹出窗口关闭前,原窗口不能获得焦点 //showModalDialog("f2.php",self,"dialogwidth=500px;dialogheight=500px;dialogtop=100px;dialogleft=100px;center
-
JS中call/apply、arguments、undefined/null方法详解
a.call和apply方法详解 -------------------------------------------------------------------------------- call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指
-
深入解析JavaScript中的arguments对象
arguments定义 所有的函数都有一个自己的arguments对象,用来储存它实际接受到的参数,而不局限于函数声明时所定义的参数列表.它不是数组却类似数组,具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length.但是却不具有数组的一些方法.可以通过call把arguments转化成真正的数组,然后进行数组的操作. var args = Array.prototype.slice.call(arguments); 类数组 1. 判断
-
js中arguments,caller,callee,apply的用法小结
在提到上述的概念之前,首先想说说javascript中函数的隐含参数:arguments Arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]arguments[n]参数function :选项.当前正在执行的 Function 对象的名字. n :选项.要传递给 Function 对象的从0开始的参数值索引. 说明Arguments是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象.Arguments是一个类似数组但不是数组的对象,说它类似数组是
-
深入理解JS函数的参数(arguments)的使用
JS函数的参数在function内可以用arguments对象来获取. 参数的调用有两种方式: 1.期望参数的使用. 2.实际传递参数的使用. 应用举例: function Test(a, b){ var i, s = "Test函数有"; var numargs = arguments.length; // 获取实际被传递参数的数值. var expargs = Test.length; // 获取期望参数的数值,函数定义时的预期参数个数(有a和b 2个参数). s += (expa
-
javascript内置对象arguments详解
一.什么是argumentsarguments 是是JavaScript里的一个内置对象,它很古怪,也经常被人所忽视,但实际上是很重要的.所有主要的js函数库都利用了arguments对象.所以agruments对象对于javascript程序员来说是必需熟悉的.所有的函数都有属于自己的一个arguments对象,它包括了函所要调用的参数.他不是一个数组,如果用typeof arguments,返回的是'object'.虽然我们可以用调用数据的方法来调用arguments.比如length,还有
-
JS函数arguments数组获得实际传参数个数的实现方法
JS与PHP在函数传参方面有点不同,PHP形参与实参个数要匹配,而JS就灵活多了,可以随意传参,实参比形参少或多都不会报错. 实参比形参多不会报错 function say(a){ alert(a); } say('琼台博客','WEB技术博客'); 执行结果 我们再来看看形参比实参多的结果 function say(a,b){ alert('a 的值是 '+a+'\nb 的值是 '+b); } say('琼台博客'); 执行结果 a 对应第一个实参"琼台博客",b 没有对应的实参所以
-
跟我学习javascript的arguments对象
1.什么是arguments arguments 是是JavaScript里的一个内置对象,它很古怪,也经常被人所忽视,但实际上是很重要的.所有主要的js函数库都利用了arguments对象.所以agruments对象对于javascript程序员来说是必需熟悉的.在javascript函数体内,标识符arguments具有特殊含义.它是调用对象的一个特殊属性,用来引用Arguments对象.Arugments对象就像数组,注意这里只是像并不是哈. javascript函数体内,argument
-
javascript arguments使用示例
复制代码 代码如下: <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 fun
随机推荐
- 从网易扒过来的js调用广告显示文件(随机几率)
- Iiscnfg.vbs IIS 配置脚本
- ios使用OC写算法之递归实现八皇后
- JScript 脚本实现文件下载 一般用于下载木马
- ajax完美实现两个网页 分页功能的实例代码
- 解压rpm包的linux命令及rpm命令使用简介
- jQuery仿IOS弹出框插件
- 关于Ruby on Rails路由配置的一些建议
- jQuery实现对无序列表的排序功能(附demo源码下载)
- 理解javascript闭包
- Windows XP终极设置之系统优化篇
- 注册表的备份
- 基于jquery实现智能表单验证操作
- JS 中document.write()的用法和清空的原因浅析
- 利用Node.js如何实现文件循环覆写
- SpringBoot继承LogStash实现日志收集的方法示例
- 解决vue-cli webpack打包开启Gzip 报错问题
- ng-alain表单使用方式详解
- Java数组扩容实现方法解析
- nodejs语言实现验证码生成功能的示例代码