Я пишу шахматного бота, и столкнулся с такой штукой. Я ставлю условный брейктпоинт, что переменная должна быть равна определённому значению.
Этот брейкпойнт не срабатывает (браузер - Chrome). Однако если я перед этой строчкой ставлю console.log(*та самая переменная*), то брейкпойнт срабатывает!
В коде ниже я ставлю брейкпойнт 'firstMove === "Qd7"' на строчке номер 10. Он срабатывает. Но если убрать console.log(firstMove) на строчке номер 9, то кондициональный брейкпойнт срабатывать перестаёт! В чём причина?
Фрагмент кода:
moves.last().every(
firstMove=>{
makeAMove(firstMove);
positions.push(game.fen());
worstPositionValuations.push(-Infinity);
moves.push(game.moves());
moves.last().every(
secondMove=> {
console.log(firstMove);
makeAMove(secondMove);
positions.push(game.fen());
worstPositionValuations.push(Infinity);
moves.push(game.moves());
moves.last().every(
thirdMove => {
makeAMove(thirdMove);
positions.push(game.fen());
positionValuation = position_valuation(positions.last());
if (worstPositionValuations.last() > positionValuation) {
worstPositionValuations.last(positionValuation);
}
positions.pop();
goToPosition(positions.last());
return true;
}
);
moves.pop();
if (worstPositionValuations[worstPositionValuations.length - 2] < worstPositionValuations.last()) {
worstPositionValuations[worstPositionValuations.length - 2] = worstPositionValuations.last();
}
worstPositionValuations.pop();
positions.pop();
goToPosition(positions.last());
return true;
}
);
moves.pop();
positions.pop();
goToPosition(positions.last());
if(worstPositionValuations.last() < initialPositionValuation){
moveToMake = firstMove;
return false;
}
worstPositionValuations.pop();
return true;
}
);