2012-05-19 59 views
3

我使用下面的JavaScript來獲取URL參數...javascript變量= x或y可能嗎?

function getUrlParams() { 
    var params = {}; 
    window.location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(str,key,value) { 
    params[key] = value; 
    }); 
    return params; 
} 
var params = getUrlParams(); 
var urlvars = (params.email); 

的URL具有[email protected]&[email protected]

在大多數情況下,這些價值觀之一是空白的,否則它們是相同的。所以我試圖使urlvars = (params.email) or (params.fbemail)

什麼是最好的方式去做這件事?

+4

爲什麼不從字面上'urlvars = params.email || params.fbemail'? – kojiro

+0

@kojiro發表您的評論作爲答案。 –

+0

@TJ。我做了,顯然在你評論前三四分鐘。 ;) – kojiro

回答

7

我會繼續努力,讓我的評論成爲答案。爲什麼不從字面上寫你說的話?

urlvars = params.email || params.fbemail; 
+2

僅供參考,它們被稱爲[短路評估](http://en.wikipedia.org/wiki/Short-circuit_evaluation)。 –

+0

創建一個簡單的小提琴在這裏嘗試jsfiddle.net/atacJ對於那些喜歡看到它的工作 –

+3

@Derek儘管短路評估不是整個點。我們在這裏感興趣的是'params.email'和'params.fbemail'的非空字符串值是* truthy *,但不是* true *,所以當布爾操作完成時,剩下的值不是「真」,而是一些字符串。這在PHP中不起作用,例如,$ foo =「」|| 「somestring」最終會以字面值「true」結束。 (如果你打印它,你會得到'1'。) – kojiro

2
var urlvars = (params.email == "" ? params.fbemail : params.email); 
相關問題