У меня есть довольно сложный массив элементов, который хранится в состоянии моего магазина редуксов.Это не так важно для вопроса.У меня есть этот фрагмент кода, который иногда ломается (1/30 оценки).Я пытался отладить эту проблему в течение нескольких дней.Вы можете игнорировать логику утверждения If, это не проблема.Проблема в том, что вторая часть оценки в заявлении обрывается.Тернарный оператор проверяет, является ли что-то не нулевым, затем выполняет отдельную проверку, в которой я получаю ошибку типа, что проверяемое мной значение равно нулю.Как это возможно?
Я пробовал консоль, регистрирующую эту проблему несколькими способами, и каждый результат предполагает, что значение существует.Я попытался переформатировать код, ожидая, что он может быть связан с браузером.Кажется, он более устойчив в браузере Google Chrome, чем в Microsoft.
const indexLeft = state.Board[index].Left;
if (
!state.InitialPlay &&
(
state.Board[index].RoadTopRight !== null ? state.Board[index].RoadTopRight.Type._ !== player.Type._ : true ||
state.Board[index].RoadRight !== null ? state.Board[index].RoadRight.Type._ !== player.Type._ : true ||
state.Board[indexRight].RoadTopLeft !== null ? state.Board[indexRight].RoadTopLeft.Type._ !== player.Type._ : true
)
) return state;
Ожидаемый фактический результат заключается в том, что значение, вычисляемое троичным оператором, будет отличаться от нуля.Это единственная проверка, необходимая, так как типы дорог получают только объявленных игроков, поэтому у него не может быть сценария, в котором тип дороги не будет иметь свойства Type.
Если вы заинтересованы в разгадке этой тайны и не возражаетеполный и полный беспорядок в моем коде, это рассматриваемый репозиторий github и модуль, о котором идет речь: https://github.com/AnteVuletic/Internship-17-React4/blob/master/src/redux/modules/board.js
Проблема может быть найдена в литерале функции _setCrossroad