关于arguments 和 repla

来源:互联网 发布:域名注册阿里云 编辑:程序博客网 时间:2024/05/21 19:25

arguments不是数组,如果用typeof arguments,返回的是object,数组的大多数操作都可以使用,

但数组的pop和push对象不适应


arguments对象不是一个真正的javascript数组,但是我们还是可以轻易的把它转换成标准的数据 ,然后进行数组操作。

var args = Array.prototype.slice.call(arguments); 

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);

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

<script>      function format(string){   var args=arguments;   var pattern=new RegExp("%([0-"+arguments.length+"])","g");   return String(string).replace(pattern,function(matc,index,ss){   console.log(ss); //8,30,37    return args[index];   });  };  console.log(format("And the %1 want to know whose %2 you %3","papers","shirt","wear"));</script>
js字符串方法replace()的第二个参数为函数讲解

ECMAScript规定,replace()方法的参数replacement可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将替换文本使用。第一个参数表示匹配到的字符,第二个参数表示匹配到的字符最小索引位置(RegExp.index),第三个参数表示被匹配的字符串的的位置(自一开始计数)。

0 0
原创粉丝点击