2013-07-09 64 views
3

在這段代碼中找到了,它讓我撓頭,並且想知道它們的好處是抓住設置索引的長度。爲什麼JavaScript數組索引由數組長度設置

var thisarray = new Array(); 

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

過的Array.push

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

此外,有沒有一個相當於這個PHP

thisarray[] 
+0

是的,thisarray [thisarray.length] = something'相當於PHP的'thisarray [] = something'。 'push()'相當於'array_push()'。 –

+0

這可能會很有趣:[爲什麼array.push有時比數組\ [n \] =值更快](http://stackoverflow.com/questions/614126/why-is-array-push-sometimes-faster-比-arrayn值)。 – insertusernamehere

+1

Javascript的推送*不等同於PHP的array_push。 Javascript的推送是一種對象/實例方法;它使用點符號直接在數組上調用。使用PHP的array_push,您必須將該數組作爲參數傳遞。 –

回答

4

在這個例子中,你已經張貼,兩種用法是相同的。兩個追加一個新的元素到數組的末尾。

但是,push()方法可以接受多個參數,因此您可以在一個語句中將多個元素附加到數組的末尾。然後push()返回數組的新長度。 push()也更短,可以說更容易閱讀。

另一個要考慮的是,如果thisarray錯誤定義(即它不是一個數組對象),那麼​​很可能以靜默方式失敗,因爲.length將只是undefined。而thisarray.push(int)將失敗並出現可捕獲的TypeError異常。

關於PHP的thisarray[](方括號)語法。就語法而言,JavaScript沒有什麼相同之處。但是,​​執行相同的操作。

2

thisarray[thisarraylength] = intthisarray.push(int)是相同的。可以說,後者對於前者的唯一優勢是可讀性。

您也可以找到這個問題的答案非常有用:Why is array.push sometimes faster than array[n] = value?

+1

要查看它們是如何相同的,可以從v8源代碼https://gist.github.com/5958737查看此片段。另見:http://people.mozilla.org/~jorendorff/es5.html#sec-15.4.4.7 – travis