1

为了清理我的代码,我一直在关注 Web Storm 中的所有提示。以下duplicate declaration错误使我感到困惑。

在下面的代码中,是否var需要(或建议)双重使用来防止全局变量?(或者我可以从 s 中删除第二个var

function run(x) {
    if(x == 5) {
        var s = 'Yes',
            bar = 1,
            baz = 2
    } else {
        var s = 'No',
            bar = 1,
            baz = 2
    }
    console.log(s);
}

此外,如果我确实删除了else条件中的 var,我会收到一个comma expression错误,表明我的代码可能“过于聪明”。

写作

else {
    bar = 1,
    baz = 2
 }

在我看来语法不好

4

2 回答 2

3

为此,我会使用:

function run(x) {
  var s = (x === 5) ? 'Yes' : 'No';
  var bar = 1;
  var baz = 2;

  console.log(s);
}

您目前收到重复声明错误,因为变量在同一范围内。

于 2014-06-19T10:59:43.680 回答
1

如果坚持原始代码,那么最干净的解决方案是:

function run(x) {
    var s, bar, baz;

    if(x == 5) {
        s = 'Yes';
        bar = 1;
        baz = 2;
    } else {
        s = 'No';
        bar = 1;
        baz = 2;
    }
    console.log(s);
}
于 2014-06-19T11:08:13.640 回答