变量“值”在分配之前使用

Gua*_*gWu 5 javascript variables for-loop variable-assignment typescript

我的代码:

function test() {
  let value: number;

  for (let i = 0; i < 10; i++) {
    value = i;
    console.log(value);
  }

  return value;
}

test();
Run Code Online (Sandbox Code Playgroud)

并得到这个:

Variable 'value' is used before being assigned
Run Code Online (Sandbox Code Playgroud)

我发现这很奇怪,因为我见过其他类似的问题,它们要么使用回调,要么使用 Promise 或其他一些异步方法,而我只使用同步 for 循环。

---------------------------------- 一些更新 -------------- ----------

function test() {
  let value: number;

  for (let i = 0; i < 100; i++) {
    // a() is very expensive and with some effects
    const result = a(i)

    if(i===99) {
      value = result
    }

  }

  return value;
}

Run Code Online (Sandbox Code Playgroud)

Spe*_*ric 7

使用非空断言运算符可确保“在类型检查器无法得出结论的上下文中,其操作数非空且非未定义”。

function test() {
  let value!: number;

  for (let i = 0; i < 10; i++) {
    value = i;
    console.log(value);
  }

  return value;
}

test();
Run Code Online (Sandbox Code Playgroud)

结果