我看到逗號串聯在JavaScript中的原始數據類型,並想知道是否有任何區別使用逗號說+
運算符以及.concat()函數?使用逗號+ +來連接JavaScript中的基本類型有什麼好處嗎?
所以一個例子,下面的語句給我ABC
var value1 = a, value2 = b, value3 = c;
document.write(value1,value2,value3);
我看到逗號串聯在JavaScript中的原始數據類型,並想知道是否有任何區別使用逗號說+
運算符以及.concat()函數?使用逗號+ +來連接JavaScript中的基本類型有什麼好處嗎?
所以一個例子,下面的語句給我ABC
var value1 = a, value2 = b, value3 = c;
document.write(value1,value2,value3);
由於字符串連接是計算的haviest操作之一,採用document.write
各種參數將執行更好。
參見該測試(它有時掛在IE,所以用其它的瀏覽器請)http://jsperf.com/document-write-vs-concatenation
闡釋:
document.write("val1", "val2", "val3");
相當於
document.write("val1");
document.write("val2");
document.write("val3");
因此,爲要快得多,因爲它不會連接字符串。
蘋果和桔子。在你的例子中沒有任何東西被連接在一起;您只需指定3個參數給write()
函數。
document.write(exp1, exp2, exp3, ...)
接受多個參數,並且當給定多個參數時,它將遍歷所有參數,就好像您在每個參數上單獨調用write()
一樣。
但是,在評估用於處理多個表達式並返回最後一個表達式的表達式時,逗號確實有用。要看到,在動作你需要用一組括號中的參數,使之形成一個參數:
document.write("a","b","c") // abc
document.write(("a", "b", "c")) // c
alert("a","b","c") // a
alert(("a","b","c")) // c
alert((x=2, ++x)) // 3
在大多數瀏覽器中(IE < = 8,Gecko)使用+運算符的字符串串聯性能很差。
例如,在我的公司,我們必須逐一拼湊一個大的HTML片段。在這種情況下,我們有這樣的事情:
var id = 123;
var html = [];
html.push('<div id="', id, '">hello</div>');
var result = html.join('');
在你有級聯的地段的情況下,這比下面的更好:
var id = 123;
result = '<div id="' + id + '">hello</div>';
因此,要回答你的問題 - 它實際上取決於關於情況。如果將多個字符串連接在一起,由於性能較差,不應使用+運算符。但99%的時間應該沒問題,但性能增益如此之小,嘗試其他任何東西都是痛苦的。但是,如果實際上有逗號分開的選項(如array.push或document.write),那麼您應該明確地利用它。
這是否工作取決於函數....'var a ='a','b','c';'會做出與您預期不同的事情。 –
@Felix Kling - 我沒有意識到'var a ='a','b','c''是有效的。 – PeanutsMonkey
@FelixKling他正在談論document.write()vs contatenating。 – rcdmk