2012-10-14 18 views
3

如果我有幾個變量,例如在Javascript中連接未定義的變量

var t1 = "123"; 
var t2 = null; 
var t3 = "456"; 

我想連接T1 + T2 + T3,是有一個固定的輸出,這樣的字符串或者是結果取決於不同的JavaScript引擎?

+1

你是什麼意思_is有這樣一個string_的固定輸出?你想做什麼? – elclanrs

+0

@elclanrs:例如,當我使用Chrome JS調試器時,我發現輸出實際上是「123undefined456」。 – derekhh

回答

2

它會返回相同的輸出,而不管瀏覽器。如果有,它的唯一的null部分可能是不同的(不太可能)

在這種情況下,這將是"123null456"

爲了抵消對於任何不一致如何null值轉換爲不同的瀏覽器字符串,可以使用:

function concatAll() { 
    var s = ''; 
    for(var x in arguments) { 
     s += arguments[x] == null ? 'null' : arguments[x]; 
    } 
    return s; 
} 

var t1 = "123"; 
var t2 = null; 
var t3 = "456"; 

concatAll(t1, t2, t3); // will return "123null456" 
9

它在所有瀏覽器/引擎中都是一樣的。你可以做這樣的(假設T1始終,T2,T3將字符串)

var t1 = "123"; 
var t2 = null; 
var t3 = "456"; 

var result = (t1 || "") + (t2 || "") + (t3 || ""); // Logical OR `||` to avoid null/undefined. 

結果將是123456

+1

請注意,如果您使用文字數字而不是字符串,則會跳過「0」。但是,如果你只用'+'連接數字,你就會遇到更大的問題。 – ColBeseder