我有一个函数,它根据内容创建者提供的一些网址和用户设备的userAgent确定按钮的网址(锚标记)。
在这个函数中,我有两个switch语句。我首先检查内容创建者选择用于按钮的链接类型(web url或App Store链接)
如果内容创建者指定了App Store链接,他们还会为多个平台提供一系列网址。它们不一定为每个平台提供链接,因此我们有一个网络网址的后备,也可以由创建者设置,也可以由后端给出(基本上可以找到的第一个网址)
我有一个问题,即内部default
语句中的switch
子句被ESLint标记为Unreachable code
。
ESLint错了吗?或者有什么我可以做得更好的吗?
function getButtonLink() {
switch(this.props.linkType) {
case 0: { // appStore link, get the best-fit appstore link for device
switch(this.detectUserAgent()) {
case 1: {
return this.setButtonUrlProp('windows');
}
case 2: {
return this.setButtonUrlProp('android');
}
case 3: {
return this.setButtonUrlProp('ios');
}
case 4: {
return this.setButtonUrlProp('amazon');
}
default: {
return this.setButtonUrlProp('web');
}
}
}
case 1: // web link
default: {
return this.props.button.urls.web;
}
}
}
答案 0 :(得分:1)
怎么样:
function getButtonLink() {
switch(this.props.linkType) {
case 0: // appStore link, get the best-fit appstore link for device
var agents = ["web", "windows", "android", "ios", "amazon"];
return this.setButtonUrlProp(
agents[this.detectUserAgent()] || agents[0]
);
}
case 1: // web link
default: {
return this.props.button.urls.web;
}
}
}
答案 1 :(得分:0)
ESLint没有向我显示此警告。确保错误不是由其他内容引起的,例如 detectUserAgent()永远不会返回不是1,2,3或4的值?
无论如何,我都会重构代码,以便外部条件使用其他内容,例如if - else,因为嵌套的switch语句一眼就难以阅读。