Невозможно получить доступ к переменной, объявленной внутри функции, из тела if

Я пытаюсь получить доступ к переменной, которую я объявил в верхней части функции внутри оператора if (также в той же функции). Это код, который я написал:

          function getAround(x: number, y: number): number {
      console.log({x, y});
      let around: number = 0;
      const max = (props.size - 1);
      console.log({around});
      // top
      if (x > 0 && grid[y - 1][x].bomb) {
        console.log({max: this.max});
        around++;
      }
    
      // top right
      if (x > 0 && y < max && grid[y - 1][x + 1].bomb) {
        around++;
      }
    
      //right
      if (x < max && grid[y][x + 1]) {
        around++;
      }
    
      //bottom right
      if (x < max && y < max && grid[y + 1][x + 1]) {
        around++;
      }
    
      //bottom
      if (y < max && grid[y + 1][x]) {
        around++;
      }
    
      //left bottom
      if (x > 0 && y < max && grid[y + 1][x - 1]) {
        around++;
      }
    
      //left
      if (x > 0 && grid[y][x - 1]) {
        around++;
      }
    
      //top left
      if (x > 0 && y > 0 && grid[y - 1][x - 1]) {
        around++;
      }
      return around;
    }

По какой-то причине у него не получается увеличить его, поэтому я попытался создать более простую версию:

      function simple(x: number, y: number): number {
  let around: number = 0;
  if (x > y) {
    around++;
  }
  return around;
}

Простая версия почему-то работает. Насколько я понимаю, оба они должны работать нормально, не так ли? Вот ошибка, которую я получаю:

      Error while mounting app: TypeError: Cannot read properties of undefined (reading '1')
    at getAround (PlayingField.vue:89)
    at PlayingField.vue:50
    at Array.forEach (<anonymous>)
    at PlayingField.vue:50
    at Array.forEach (<anonymous>)
    at getAllAround (PlayingField.vue:49)
    at generateGrid (PlayingField.vue:41)
    at setup (PlayingField.vue:45)
    at callWithErrorHandling (runtime-core.esm-bundler.js:6708)
    at setupStatefulComponent (runtime-core.esm-bundler.js:6317)

Я не уверен, что это важно, но я использую Nuxt 3, а код находится внутри script setup ярлык.

1 ответ

Строка, упомянутая в ошибке, отключена на единицу, и на самом деле ошибка была в строке 88. После исправления моего оператора if теперь он работает безупречно.

Для справки в будущем: использовался браузер Edge (Chromium) версии 96.0.1054.41 в Windows 10.

Другие вопросы по тегам