Tengo el archivo index.js con estos contenidos:
const test = function (cb) { cb(); }; test(myCallback = function () { console.log('done'); }); Cuando ejecuto index.js usando Node v16.6.1 y CommonJS:
done Cuando ejecuto index.js usando Node v16.6.1 con "type": "module" en mi archivo package.json :
ReferenceError: myCallback is not defined¿Puede decirme si esto se relaciona con los módulos ECMAScript y cómo?
Este es un efecto secundario del uso de ESM. El modo estricto ( use strict ) está habilitado de forma predeterminada. Lo que causa el error, porque: myCallback no se declara en ninguna parte.
let myCallback; test(myCallback = function () { console.log('done'); }); // here we assign myCallback to a function. are you sure you want to actually do this?Antes, estaba intentando crear una variable global.
Primero, el modo estricto hace imposible crear accidentalmente variables globales. [...] Asignaciones, que accidentalmente crearían variables globales, arrojarían un error en modo estricto
Hay dos formas de nombrar funciones. Puede establecer una variable igual a una función. O puede darle un nombre a una función. Aquí hay dos formas de resolver su problema.
Nombra la función
test(function myCallback () { console.log('done'); });Establecer variable igual a función
const myCallback = function () { console.log('done'); } test(myCallback);