Antes de meterte de lleno en Node.js, el examen JSNAD te exige dominar prerrequisitos de JavaScript que van más allá del runtime. Si tu base del lenguaje está floja, este dominio te va a costar, así que vale la pena reforzarlo desde el inicio.
¿Qué evalúa el dominio de prerrequisitos de JavaScript en JSNAD?
Este dominio mide tu conocimiento general del lenguaje, no de Node como tal. Hay dos ejercicios que resolver, el task 9.1 y el 9.2, y suelen ser más extensos que los anteriores porque requieren lógica adicional.
¿Qué es JSNAD? Es la certificación oficial de JavaScript Application Developer para Node.js. Antes de probar APIs nativas, te pide demostrar fluidez con el lenguaje base.
¿Qué temas debo estudiar de la documentación de MDN?
La referencia obligada es Mozilla Developer Network. Estos son los conceptos que te conviene revisar con calma:
- Closures y cómo las funciones recuerdan su contexto.
- Hoisting y el orden de declaración en memoria.
- Las múltiples formas de crear objetos y el manejo del prototype.
- Trabajo con export y las distintas formas de exportar módulos.
- Toda la fundamentación de funciones y sus métodos.
De esa lista, pon atención especial a las formas de crear objetos y controlar su prototipo. Es el punto donde más se traba la gente en el examen.
¿Cómo se resuelve un ejercicio del dominio de JavaScript?
El enunciado del task 9.x pide modificar la función answer dentro de answer.js para que reciba un parámetro operation de tipo función y devuelva un objeto con dos cosas: una propiedad name con cualquier string y un método result que ejecute la función operation recibida.
La traducción a código es directa. Recibes el parámetro y retornas el objeto:
javascript
function answer(operation) {
return {
name: 'answer',
result: operation
};
}
¿Cómo verifico que mi solución funciona?
Aunque el ejercicio se ve simple, conviene probarlo antes de darlo por cerrado. Defines una función mínima y la pasas como argumento:
javascript
function op() {
return 1 + 2;
}
const res = answer(op);
console.log(res.result());
Al correr node answer.js la consola imprime 3, que es el resultado de ejecutar la función pasada como operation. Con eso confirmas que el objeto devuelto tiene la estructura correcta y que result ejecuta lo que recibió.
¿Por qué borrar el código de prueba antes de entregar? Porque el examen evalúa exactamente lo que se pide. Cualquier línea extra puede ensuciar la solución o romper el test automático.
¿Por qué dominar objetos y prototipos marca la diferencia?
En este ejercicio, devolver un objeto con un método que ejecuta una función recibida toca dos pilares: funciones como ciudadanos de primera clase y la construcción de objetos literales. Si entiendes cómo se crean objetos por literal, por Object.create, por constructor o por class, puedes resolver variaciones del mismo problema sin pensarlo dos veces.
El manejo del prototipo aparece cuando necesitas compartir métodos entre instancias o cuando el examen te pide extender comportamiento sin duplicar código. Por eso conviene practicar con los métodos de funciones como call, apply y bind, y entender cómo this cambia según cómo invocas la función.
La otra pieza clave es export. Saber diferenciar entre module.exports, exports.algo y la sintaxis de ES modules te evita errores tontos cuando el grader importa tu archivo.
Revisa la documentación de MDN sobre closures, hoisting, prototipos y métodos de funciones, y nos vemos en la siguiente clase donde trabajaremos el module system. ¿Qué concepto de los mencionados te cuesta más? Cuéntalo en los comentarios.