4Trabes Historias de una empresa en 100 metros cuadrados

El blog de Trabe Soluciones

Nota mental: no olvidar el var

|

A veces el domingo no es el típico día en que te tiras en el sofa a ver la vida pasar y recuperar fuerzas para ir el lunes a trabajar con un mínimo de alegría. A veces, el domingo, te dedicas a hacer labores de consultoría para los conocidos, amigos, familiares y demás. Hoy ha sido un domingo de esos. Y no uno llevadero, ha sido uno en el que te preguntas cada 20 segundos por qué leches te levantaste de la cama con lo bien que estabas roncando. En fin. Me estoy desviando del tema.

Nota mental: no olvidar el var

Para ser breve, diré que mi labor de consultoría incluía la creación de un tag JSP que generaba un complicado formulario, que para más inri tenía que hacer filigranas JavaScript. La cosa iba como la seda, hasta que necesitamos recursión. Sí, recursión. No recuerdo haber necesitado hacer nada recursivo en JavaScript en mi vida, pero las circunstancias mandaban y no era el momento de buscar otras alternativas…

1
2
3
4
5
6
7
8
9
10
11
function hazAlgoConElNodo(nodo) {

   var nombreNodo = nodo.nodeName;
   var claseNodo = nodo.className;

    // etc, etc.   

    for (i = 0; i < nodo.childNodes.length; i++)  {
        hazAlgoConElNodo(nodo.childNodes[i]);
    }
}

… código inocente donde los haya, con una recursión trivial. Pues nada, vamos a probarlo y ¡Upss! el navegador explota. ¡No me puedo creer que entremos en un bucle infinito!, ¡es imposible!, ¡mi%xc%$!, ¡c$%j%$s! y demás improperios. Nos calmamos, depuramos un poco, y … ¬_¬U … por qué leches me levanté de la cama con lo bien que estaba roncando.

1
 for (var i = 0; i < nodo.childNodes.length; i++) {

Mucho mejor. Es lo que pasa cuando uno trabaja cuando debería estar descansando y no es capaz de leer lo que tiene delante. Hay que ver lo fácil que es olvidarse de un keyword importante en un lenguaje como JavaScript y no darse cuenta. Hay que tener mucho cuidado con el susodicho var que marca el ámbito de las variables (o scope, según el gusto lingüístico de cada cual).

A mi no me vuelve a pasar… espero xDDDD. Lo dicho, nota mental: no olvidar el var.

Lo sentimos, pero los comentarios están cerrados