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);