const范围与babel transpiler

时间:2017-07-17 01:31:09

标签: ecmascript-6 redux babel

iam在我的reducer中构建一个react-redux应用程序我在使用babel es2015和stage-2编译我的bundle.js与webpack之后得到了这个错误,我做了一些研究并且它们使用了const范围是块代码,所以为什么我得到双重声明的错误? 我的减速机就像上面的这个功能

function print(foo){
  switch(foo){
    case 'test':
      const bar = 2;
      console.log(bar+1);
      break;
    case 'test1':
      const bar = 1;
      console.log(bar+2);
      break;
    default:
      console.log('no match')
      break;
  }
}
print('test');

1 个答案:

答案 0 :(得分:1)

你需要用大括号包装每个case分支,如下所示:

function print(foo){
  switch(foo){
    case 'test': {
      const bar = 2;
      console.log(bar+1);
      break;
    }
    case 'test1': {
      const bar = 1;
      console.log(bar+2);
      break;
    }
  }
}

switch语句中的所有内容都是一个块范围。大括号将每个大小写放在它自己的块范围内 - 如果没有它们,你将在相同的范围内重新声明一个const,这将是错误的。