Depuração condicional com JavaScript

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.