2011-12-27 156 views
4

我在幾個地方見過這個,最着名的是plugins.js文件HTML5 Boilerplate,我不知道爲什麼。「a,b,c」.split(「,」)優於[「a」,「b」,「c」]的優點是什麼?

背後有什麼用類似

var d = "header,nav,footer".split(","); 

代替

var d = ["header", "nav", "footer"]; 

的動機是什麼?

+5

輸入速度更快,不用擔心引用不匹配 – 2011-12-27 01:38:20

+2

更易於編輯。這值得麼?咩。 – 2011-12-27 01:39:30

+0

你說番茄,我說番茄。 – 2011-12-27 01:40:20

回答

12

Moore's Law的必然壓力之下,尋找軟件消耗更多CPU週期來完成相同工作的方法很重要。您的具體案例(使用split而不是先寫出您的意思)是「微型去優化」的一個例子。

雖然有效率更高的方法來獲得低效率(代碼生成模板,預處理器和類似的工具),但對於程序員掌握大量這樣的技巧很重要。

+0

這很可愛... – Asaph 2011-12-27 01:47:04

+0

你是我的新英雄。 – 2011-12-27 02:07:11

1

人們往往更喜歡能寫東西,一個字符串內,而不必編寫與報價等

但是單獨字符串 - 如果可能 - 它通常是更好的使用空間,而不是逗號來做到這一點,因爲在許多如果沒有指定參數,split()函數將使用它們作爲默認分隔符。

但總而言之 - 這只是開發者喜歡寫的內容。這當然不是更快,但差異並不重要(反正你不會打電話這十億次,是你?)

+0

'我根本不會調用它,我想知道爲什麼這個月我看過它三次,並且使用不同的分隔符,比如管道和逗號,正如你所說 - 默認值是一個空格。想到也許我錯過了一些東西。 – wlangstroth 2011-12-27 01:45:03

+0

聞起來像不同的開發人員 - 除非有人希望能夠使用他沒有在其中一個元素中使用的分隔符。 – ThiefMaster 2011-12-27 01:45:50

0

沒有優勢。實際上,它可能效率稍低(我沒有檢查過)對字符串方法的調用,但可能不是太多。

這只是個人偏好。此外,人們傾向於使用任何語言使用string.split()。這很性感。

0

爲什麼寫x *(1000/4),如果你可以寫x * 250?我的意思是爲什麼給運行時增加字符串解析,分裂(以及由於缺少逗號,字符串內的逗號等引起的錯誤的機會)等令人頭痛的問題?我沒有看到任何超出某種奇怪的編碼習慣的方式編寫代碼。

0

更容易打字,因爲您的報價較少。不適合比單詞列表更復雜的東西。

1

它可能是一個不完全重構的結果:也許這個字符串最初來自一個配置文件(或者有計劃將它分割成一個配置文件),或者來自用戶輸入。在這種情況下,從一個字符串分裂將是自然的。

或者它甚至可能會與使用此類型輸入的其他部分的樣式相匹配。也許是這樣的:

function get_sections() 
{ 
    if has_config() 
    { 
     return get_config("sections").split(","); 
    } 
    return "header,nav,footer".split(","); 
} 

第三個選項可能是使翻譯更容易。

不是說我會在任何一種情況下使用它,但它可能對某些開發人員有意義。

相關問題