Contexto: estoy creando una tabla tbody a partir de un archivo de datos y me gustaría aplicar un formato a ciertas columnas. Funciona bien si omito el condicional en el que verifico el número de columna. Para descartar otros problemas en esa parte de mi código, lo he simplificado. Lo que todavía no puedo entender es por qué la declaración if siempre verdadera simplemente no se dispara.
Eliminando las cosas superfluas, este código funciona:
Object.values(dataRow).forEach((val) => { let cell = row.append('td'); cell.text(val); }Pero esto no:
Object.values(dataRow).forEach((val) => { if (true) { let cell = row.append('td'); } cell.text(val); }Para aclarar, siempre que no tenga la declaración if allí, mi celda td se completa como espero que sea. Pero con el condicional incluido, no pasa nada.
¿Qué me estoy perdiendo? JavaScript no es mi primer idioma, así que tal vez me esté perdiendo algo realmente básico.
Debería ser el mismo en la mayoría de los idiomas, pero hay algo llamado alcance .
Si declara una variable de ámbito de bloque dentro de una declaración condicional, su valor no se definirá fuera de ella.
Por ejemplo:
if (true) { let a = 9; a // 9 } a // ReferenceError: a is not defined let a; a // undefined if (true) { a = 9; a // 9 } a // 9