Невозможно получить доступ к переменной, объявленной внутри функции, из тела 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.