我正在考虑的主要问题是在if语句中分配变量是否在不同浏览器中安全可靠。如果它是安全的,我想使用它。
这里它读取查询字符串,如果查询字符串变量SN是Twitter或Facebook,那么它进入if并且你可以使用变量,如果querystring变量不存在或是其他值,那么它进入else
if(socialNetwork = (window.location.search.indexOf("SN=Twitter") > 0) ? "Twitter" : ((window.location.search.indexOf("SN=Facebook") > 0) ? "Facebook" : null))
{
alert(socialNetwork);
}
else
{
alert("nope");
}
答案 0 :(得分:5)
它是语言设计的一部分,应该适用于每个浏览器,但它很难阅读。
答案 1 :(得分:4)
那太丑了。
var uselessSocialNetworkingApp = window.location.search.replace(/.*\bSN=(\w+)\b.*/, "$1");
if (uselessSocialNetworkingApp)
alert("yay!");
else
alert("no");
有趣的是,在“if”标题中有一个可怕的构造,但它在“alert”参数列表中是“if”而不是“?:”表达式: - )
此外,为了至少略微同情预期的风格,这是超现代Javascript中“let”语句的一个例子。
答案 2 :(得分:0)
哦,我的!这是有效的,应该始终有效,假设您在其他地方创建socialNetwork变量,不要创建隐含的全局变量。但是,这确实是一种解决问题的奇怪方法。为什么不创建一个返回社交网络的函数来抽象一点?
那就是说,如果你真的想要一个单行解决方案,那怎么样?:
alert(function(){ var m = /SN=([A-Za-z]+)/.exec(window.location.search); return (m ? m[1] : null)}());
答案 3 :(得分:0)
location.socialNetwork== (function(){
var s= location.search || '';
s= /SN=([a-zA-Z]+)/.exec(s) || [];
return s[1] || null;
})()
alert(location.socialNetwork)