2016-03-08 96 views
-3
console.log(Array(4).join("hi")); 
>> "hihihi" 

我不明白這裏發生了什麼?當我們在JavaScript中聲明Array(4)時會發生什麼?

+2

'Array(4)'創建4個未定義元素的數組。 'join'將使用'hi'作爲_glue_加入數組,因此給** 3 **'hi'忽略'undefined'。 – Tushar

+0

@Tushar,但'undefined'被忽略.. – Rayon

+0

@RayonDabre - 未定義的元素仍然用在'.join()'中:https://jsfiddle.net/jfriend00/jcf5xkak/ – jfriend00

回答

1

join()split()相反。而split通過你傳遞的分隔符來分隔一個數組,join則將所有的元素與你傳遞的任何參數進行分隔。

在這種情況下,該陣列只是Array(4),所以4個未定義的元素。組合這些將產生「undefined hi undefined hi undefined hi undefined」。

由於JS在這種情況下不actually treat undefined as anything,它把它變成一個空字符串和你得到的是hihihi

編輯:

的:我從join()文件的最後一條語句參考所有數組元素的字符串轉換都被連接成一個字符串。如果元素未定義或爲null,則將其轉換爲空字符串。

+0

_因爲js實際上並沒有處理undefined as anything_任何引用來捍衛這個聲明? – Rayon

+0

編輯,以反映您的意見回答 – Pabs123

+0

這不是什麼 - 它是一個空字符串。 – zerkms

相關問題