2014-03-24 46 views
0

我在GOOLGE控制檯測試我的代碼,我發現concat()不工作,因爲我有如下圖所示:意外行爲,推動

var a = ["a"]; //undefined 
a.concat("b","c"); // ["a","b","c"] 

現在,當我把一些其他的字符串,它字符串替換「b」和「C」

即[續]

a.push("e","f"); // 3 
a // ["a", "e","f"] 

你是否注意到在該字符串推線3指標。我很感興趣的是,首先我們聯繫「b」和「c」,然後當我嘗試獲得所說的1指數的值時,它返回undefined!然後,當我們將"e""f"放在同一個數組中時,這些字符串會替換拼接字符串的索引。現在的問題是:

1)爲什麼這些concatpush函數顯示奇怪的行爲?

2)這是否意味着cancat函數的失敗?

3)請問這個contact函數是否只是名義上的?

+3

'.concat()'不改變原來的。它使一個新的陣列。如果您對本地方法有疑問,請閱讀文檔。 [MDN'.concat()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat) –

+0

你要推(),沒有CONCAT() – dandavis

+0

介意選擇一個答案? :) – Montagist

回答

3

這是正確的。 Concat不會像您期望的那樣修改陣列。

當您:

a.concat("b","c"); 

它返回[ 「一」, 「B」, 「C」]的數組,但沒有保存基準(你會做這樣)

a = a.concat("b","c"); 

一些信息from the MDN

CONCAT不會改變這個或任何作爲參數提供的數組,而是返回淺副本包含從原始數組中組合的相同元素的副本。

+1

'push'修改陣列。 – VisioN

+2

W3C'=/='[W3Schools的](http://w3fools.com/) – VisioN

+0

好一點。哈哈 – Montagist