0

我正在阅读 jQuery 的源代码。在 jQuery.merge 的函数中

    merge: function( first, second ) {
    var i = first.length,
        j = 0;

    if ( typeof second.length === "number" ) {
        for ( var l = second.length; j < l; j++ ) {
            first[ i++ ] = second[ j ];
        }

    } else {
        while ( second[j] !== undefined ) {
            first[ i++ ] = second[ j++ ];
        }
    }

    first.length = i;

    return first;
}

有两点我无法理解:

  1. 为什么它检查了 second.length 的类型,而不检查 first.length 的类型?
  2. 既然Array的长度是自动增加的,为什么还要手动设置长度呢?

谢谢你。

4

1 回答 1

0

Javascript 没有,也不支持关联数组。但是…… Javascript 中的所有数组都是对象,并且 Javascript 的对象语法给出了关联数组的基本模拟。

因此,如果您要运行:

 x = [];
 x['a'] = 1;
 x['b'] = 2;
 alert(x.length); //alerts 0;

所以他们设置了长度来让我们得到我们期望的长度

于 2013-05-09T05:50:40.343 回答