我已经多次看到switch(true)
的使用情况,并且今天使用它而不是多个else ifs
。以下是我用它的情况:
var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') != -1;
var isSafari = navigator.userAgent.toLowerCase().indexOf('safari') != -1;
var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') != -1;
var browser = null;
switch (true) {
case isChrome:
{
browser = "chrome";
break;
}
case isSafari:
{
browser = "safari";
break;
}
case isFirefox:
{
browser = "firefox";
break;
}
}
我的观点比多else ifs
更明确。你认为这是一个好方法吗?
答案 0 :(得分:2)
这只是个人意见的问题。 switch(true)
一开始可能会让人感到困惑,但在速度或语义方面确实无关紧要。我个人认为if...else
在这种情况下看起来更好,因为选项太少了。如果有10-15个浏览器,我可能会使用switch
。
如果您正在寻找纯粹的简洁,@ adeneo的正则表达式将起作用,但这将更难理解,使用此代码
var ua = navigator.userAgent.toLowerCase(),
browser = ua.match(/(chrome|safari|firefox)/).length ? ua.match(/(chrome|safari|firefox)/)[0] : 'nope';
console.log(browser);
看起来非常酷和简洁,但似乎有点不直观。我只想说,无论你想做什么都没关系,这样的事情没有标准。