【问题标题】:why is javascript array index set by array length为什么javascript数组索引由数组长度设置
【发布时间】:2013-07-07 07:21:03
【问题描述】:

偶然发现了这段代码,让我摸不着头脑,想知道他们抓住长度来设置索引有什么好处。

var thisarray = new Array();

    function addtoArray(int){
        thisarray[thisarray.length] = int;
    }

通过数组.push

 function addtoArray(int){
        thisarray.push(int)
    }

另外,有没有这个php的等价物

thisarray[]

【问题讨论】:

  • 是的,thisarray[thisarray.length] = something 等价于 PHP 的 thisarray[] = something。而push() 等价于array_push()
  • Javascript 的推送“等同于”PHP 的 array_push。 Javascript 的 push 是一个对象/实例方法;它使用点符号直接在数组上调用。使用 PHP 的 array_push,您必须将数组作为参数传递。
  • 根据我的经验,不使用 push 表明开发人员已经使用 Javascript 很长时间了,因为 before push 被引入/完全支持 -- 我记得当它不是一个选项时,回到 1998/99 年左右。

标签: javascript


【解决方案1】:

在您发布的示例中,两种用途是相同的。两者都将一个新元素附加到数组的末尾。

但是,push() 方法可以采用多个参数,因此您可以在一个语句中将多个元素附加到数组的末尾。 push() 然后返回数组的新长度。 push() 也更短,可以说更容易阅读。

要考虑的另一件事是,如果thisarray 的定义不正确(即它不是一个数组对象),那么thisarray[thisarray.length] = int; 可能会静默失败,因为.length 将只是undefined。而thisarray.push(int) 将失败并出现可捕获的 TypeError 异常。

关于 PHP 的 thisarray[](方括号)语法。就语法而言,JavaScript 中没有什么完全相同的。但是,thisarray[thisarray.length] = int; 执行相同的操作。

【讨论】:

    【解决方案2】:

    thisarray[thisarraylength] = intthisarray.push(int) 是相同的。可以说,后者相对于前者的唯一优势是可读性。

    您可能还会发现这个问题的答案很有用:Why is array.push sometimes faster than array[n] = value?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-22
    • 2012-11-17
    • 2017-11-10
    • 2018-02-22
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    相关资源
    最近更新 更多