A depuração condicional com JavaScript não é muito comum; na verdade, não há suporte para a maioria das linguagens. Em JavaScript, temos a instrução debugger, se você nunca ouviu falar sobre ela, basicamente para a execução da mesma maneira se você colocar um ponto de interrupção nas ferramentas de desenvolvimento do Chrome.
Como temos uma instrução, é muito fácil começar a depurar com condicionais.
Mas por que devo usar a depuração condicional com JavaScript? Há muitos motivos, mas um dos meus favoritos é evitar entrar em uma função como 100 vezes esperando por aquele objeto que está quebrando seu aplicativo. Por exemplo:
function doStuffWithDOM(domObj) {
if (domObj.id == "myObj") debugger;
// do stuff...
}
Outra situação útil pode ser quando você tem um requestAnimationFrame ou um $ watch no AngularJS e essa função quebrou seu aplicativo porque uma variável excede um valor. Por exemplo:
function myRequestAnimationFrame() {
// do stuff...
if (myValue > 100) debugger;
// do stuff...
}
Obviamente, a desvantagem disso é que você deve se lembrar de removê-lo quando for para a produção, mas deve ser muito fácil criar uma classe e lidar com isso globalmente.
Usar a instrução debugger pode economizar horas de desenvolvimento e teste e, melhor ainda, pode deixá-lo feliz.