+86-13828884598

js程序员必需熟悉的arguments对象属性

36682016-12-07編輯:网站前端设计伍林來源:前端网站设计 在線PDF預覽

arguments 是JavaScript里的一个内置对象,它很古怪,也经常被人所忽视,但实际上是很重要的。

所有主要的js函数库都利用了arguments对象。

所有的函数都有属于自己的一个arguments对象,它包括了函所要调用的参数。

他不是一个数组,而是一个类数组对象,  

如果用typeof arguments,返回的是'object'。

虽然我们可以用调用数据的方法来调用arguments。比如length,还有index方法。但是数 组的push和pop对象是不适用的。

看起来貌似argument对象使用起来十分有限,但是实际上它是一个非常有用的对象。

你可以通过使用argument对象让函数能够调用数量不定 的参数。  

也就是说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.callee返回此arguments对象所在的当前函数引用。

我们知道, 递归函数必须能够引用它本身。很典型的,函数通过自己的名字调用自己。

然而,匿名函数 (通过 函数表达式 或者 函数构造器 创建) 没有名称。

因此如果没有可访问的变量指向该函数,唯一能引用它的方式就是通过 arguments.callee。

function create() {

   return function(n) {

      if (n <= 1)

         return 1;

      return n * arguments.callee(n - 1);

   };

}

var result = create()(5); // returns 120 (5 * 4 * 3 * 2 * 1)

对于有名字的函数, 在使用函数递归调用时也推荐使用arguments.callee代替函数名本身。

注意:arguments.callee被从 ES5 严格模式中移除掉了!

网页设计

文章引用:https://www.hkhulian.com/infos/552.html
本文之圖文訊息香港網頁設計,香港App開發公司——香港互聯摘自互聯網,如有版權糾紛或違規,請聯繫我們刪除,谢谢。

上一篇: 暫無

下一篇: 暫無

感謝您訪問香港互聯,我們用13年的技術實力用心為您服務

高端網頁設計 • App定制開發 • 網路推廣服務

我們推薦直接電話溝通
+86-13828884598
9:00~18:30
+86-75536630177
szhulian@qq.com
香港互聯微信好友

掃碼微信加好友
請您標注微信說明

請提交您的需求

5 香港互聯微信好友
掃一掃,微信溝通