变量“ xxx”在分配前使用

时间:2019-12-13 15:03:33

标签: javascript node.js typescript

我有这段代码

  let hostel : HostelType;

              hostels.forEach( (r) => {
                  const i =  r.identifier.findIndex((_identifier: any) => _identifier.id === '433456');
                  hostel = hostels[i];
              });

              hostel.serviceLevel.value = 'P';

但是我有一个编译错误:

 Variable 'hostel' is used before being assigned.

3 个答案:

答案 0 :(得分:0)

您应该确保分配了一个实例:

let hostel : HostelType;

hostels.forEach( (r) => {
  const i =  r.identifier.findIndex((_identifier: any) => _identifier.id === '433456');

  if (i === -1 || !hostels[i]) {
    throw new Exception('There is no hostel');
  }

  hostel = hostels[i];
});

hostel.serviceLevel.value = 'P';

理想的代码应该是这样的:

const hostel = hostels.find(x => x.identifier === '433456');

目前尚不清楚为什么identifier是一个数组以及它与hostels数组中的索引之间的关系。

答案 1 :(得分:0)

您在初始化之前使用它。

您需要在循环之前使用hostel = new HostelType();

对其进行初始化。

答案 2 :(得分:0)

您需要先初始化hostel,然后才能在hostel.serviceLevel.value = 'P';语句中使用它,
或检查是否确实已定义:

if (typeof hostel !== 'undefined') {
    hostel.serviceLevel.value = 'P';
}

hostel变量可能未定义:

  • 如果hostels为空(永远不会调用回调中的代码),
  • 如果hostels中的最后一个元素包含一个标识符,该标识符的id字段与433456匹配(i在上一次迭代中将是-1