asa*_*nas 63 javascript ecmascript-6
我有以下代码,我收到错误'Duplicate Declaration query_url'.
switch(condition) {
case 'complex':
const query_url = `something`;
break;
default:
const query_url = `something`;
break;
}
Run Code Online (Sandbox Code Playgroud)
我知道query_url被声明了两次,这是不对的.但我不知道如何解决这个问题.有人可以帮助确定这项工作的正确方法吗?
Ber*_*rgi 278
尝试用块包装案例:
switch(condition) {
case 'complex': {
const query_url = `something`;
… // do something
break;
}
default: {
const query_url = `something`;
… // do something else
break;
}
}
Run Code Online (Sandbox Code Playgroud)
rob*_*b2d 11
在这些情况下,我个人更喜欢(并且倾向于滥用)以下内容:
const query_url = (()=>
{
switch(condition)
case 'complex': return 'something';
default : return 'something-else';
})();
Run Code Online (Sandbox Code Playgroud)
(这需要ES6或在Node 4.x中声明"use-strict")
更新:或者,更紧凑,取决于是否有任何逻辑或如果它是一个简单的任务:
const query_url = {complex : 'something'}[condition] || 'something-else';
Run Code Online (Sandbox Code Playgroud)
当然,还取决于那些switch语句中嵌入的外部逻辑的数量!
您可以使用{}
它来确定开关盒的范围。
对于您的情况,只要 var 存在并且可以在大括号之间访问,您就需要返回变量:
switch(condition) {
case 'complex': {
const query_url = `something`;
return query_url;
}
default: {
const query_url = `something`;
return query_url;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不使用return
let query_url
,则必须在 switch 语句上方声明。
如果query_url
取决于switch分支可以有多个值,显然你需要一个变量(用var
或声明let
).
const设置一次并保持这种状态.
let的示例用法
let query_url = '';
switch(condition) {
case 'complex':
query_url = `something`;
break;
default:
query_url = `something`;
break;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17705 次 |
最近记录: |