最近开始使用EcmaScript 6/2015并使用Babel编译我的代码。我也在使用Redux,所以编写一个如下所示的 reducer :
const reducer = (state, action) => {
switch (action.type) {
case ACTION1:
const myvar = ''; // do something to determine myvar
return { ...state, myvar };
case ACTION2:
const myvar = ''; // do something to determine myvar
return { ...state, myvar };
default:
return state;
}
};
显然,真实的东西会做更高级的事情,这只是说明了这个想法。我的.babelrc
包含:
{
"plugins": ["transform-object-rest-spread"],
"presets": ["es2015"]
}
现在,巴贝尔告诉我:
重复声明“myvar”
我不明白。我认为两个case
块都会创建一个不同的范围,因此无论出于什么原因都可以重用变量名。我的期望是错的,或者这确实应该在EcmaScript 6/2015中起作用并且它是某种错误吗?