2012-04-25 59 views
0

在閱讀this discussionthis article後,我仍然有這個問題。比方說,我有下面的代碼片段:JavaScript字符串數組是否自動用逗號分隔?

var arr = new Array(3); 
arr[0] = "Zero"; 
arr[1] = "One"; 
arr[2] = "Two"; 

document.write(arr.join(",")); 

如果我document.write(arr);更換document.write()線,他們是等價?替換語句是否自動以逗號作爲分隔符連接數組元素?

在此先感謝!

+3

爲什麼不自己嘗試一下? – keune 2012-04-25 20:32:35

+0

他們看起來相當,但我不知道爲什麼。 – stanigator 2012-04-25 20:33:25

+0

你的意思是什麼?你的意思是他們在輸出到瀏覽器時看起來是否一樣? – j08691 2012-04-25 20:34:09

回答

5

「但我無法弄清楚,爲什麼」

這是因爲任何事物都有一個toString函數作爲其原型的一部分。當你寫出來的時候,這個函數被調用來獲取它所在的字符串表示形式。對於數組,默認處理與join相同。

Array.prototype.toString.apply([1,2,3]) == Array.prototype.join.apply([1,2,3]) 
> true 
1

將數組傳遞給document.write()將默認使用逗號分隔它們。

http://jsfiddle.net/XnW7V/

var arr = new Array(3); 
arr[0] = "Zero"; 
arr[1] = "One"; 
arr[2] = "Two"; 

document.write(arr); //outputs Zero,One,Two 
+0

所以默認情況下用逗號分隔? – stanigator 2012-04-25 20:35:47

+0

逗號作爲格式的一部分添加。該數組實際上沒有逗號。如果你在內存中查看,那麼每個包含無逗號的值的元素都會有一個插槽。我在猜測document.write()函數中有一些條件邏輯,它決定了作爲參數傳遞的內容,如果它是一個數組,它必須用逗號將它們連接起來並吐出結果。 – 2012-04-25 20:37:19

+0

我的意思是默認情況下根據Javascript標準添加的格式化符號? – stanigator 2012-04-25 20:38:07