我有以下代码,并且得到了错误“ DuplicationDeclaration query _ url”。
switch(condition) { case 'complex': const query_url = `something`; break; default: const query_url = `something`; break; }
我知道 query _ url 被声明了两次,这是不对的。但我不知道该怎么解决。有没有人能告诉我怎么做才是正确的?
Try wrapping the cases in blocks:
switch(condition) { case 'complex': { const query_url = `something`; … // do something break; } default: { const query_url = `something`; … // do something else break; } }
Just put your switch in a function with some return statements :
switch
var condition; function aSwitch(condition){ switch(condition) { case 'complex': return 'something'; default: return 'something'; } } const query_url = aSwitch(condition);
if you need to redeclare the same variable in each case see @Bergi 's answer bellow
if query_url can have multiple values depending on the switch branch obviously you need a variable ( declare either with var or let ).
query_url
var
let
const is set once and stays that way.
example usage with let
let query_url = ''; switch(condition) { case 'complex': query_url = `something`; break; default: query_url = `something`; break; }
I personally prefer (and tend to abuse) the following in these sorts of cases:
const query_url = (()=> { switch(condition) case 'complex': return 'something'; default : return 'something-else'; })();
(this requires ES6 or declaring "use-strict" in Node 4.x though)
Update: Alternatively, much more compact depending on if there is any logic there or if it's a simple assignment:
const query_url = {complex : 'something'}[condition] || 'something-else';
Also, of course, depends on the amount of outside-logic embedded in those switch statements!
const query_url={ complex:'something complex', other:'other thing' }[condition]
The drawback is,you can't have default with object,you need to have addition check of condition.
You can use {} to scope your switch case.
{}
For your case, you need to return the variable as long as the var exists and is accessible between curly braces:
switch(condition) { case 'complex': { const query_url = `something`; return query_url; } default: { const query_url = `something`; return query_url; } }
If you won't use return, you must declare a let query_url above your switch statement.
return
let query_url