Javascript 词法作用域错误,属性未定义

Javascript 词法作用域错误,属性未定义,javascript,reactjs,redux,Javascript,Reactjs,Redux,我的linter警告我在我的reducer中有一个词法范围错误,我将声明从switch语句中移出,如下所示: export function eventsForMonth(state = {}, action) { const { events: {}, day: {} } = action.data; const newItems = {}; switch (action.type) { case "EVENTS_MONTH":

我的linter警告我在我的
reducer
中有一个词法范围错误,我将声明从
switch
语句中移出,如下所示:

export function eventsForMonth(state = {}, action) {
    const { events: {}, day: {} } = action.data;
    const newItems = {};

    switch (action.type) {
        case "EVENTS_MONTH":
            Object.keys(events).map(event => {
                newItems[event] = [...events[event].dots];
            });

            for (let i = -15; i < 85; i++) {
                const time = day.timestamp + i * 24 * 60 * 60 * 1000;
                const strTime = timeToString(time);
                if (!newItems[strTime]) {
                    newItems[strTime] = [];
                }
            }

            return {
                ...newItems
            };

        case "EVENTS_CALENDAR_MONTH": 
            // ...
导出函数eventsForMonth(状态={},操作){
const{events:{},day:{}=action.data;
const newItems={};
开关(动作类型){
案例“事件/月份”:
Object.keys(events.map)(event=>{
newItems[event]=[…事件[event].dots];
});
for(设i=-15;i<85;i++){
const time=day.timestamp+i*24*60*60*1000;
const strTime=timeToString(时间);
如果(!newItems[strTime]){
newItems[strTime]=[];
}
}
返回{
…新项目
};
案例“事件日历月”:
// ...

但是,现在我遇到了一个错误:无法读取未定义的属性事件。如何在我的
开关
之外声明我的
事件
,而不获取错误?

检查您的操作。数据内容,可能错误是说数据键未定义hmm
const{events:{},day:{}
?您的意思是
const{events={},day={}
?离题。你的代码很难推理。为什么你要使用
map
来变异一些外部对象?为什么你有两个循环用不同的数据填充同一个对象?那些神奇的常数是什么15、85?为什么你在返回之前要浅层复制
newItems
对象?我还在学习javascript,这是最好的方法我可以考虑从我的api格式化数据。