Je souhaite actuellement partager une variable d'instance. Par exemple, pour se connecter à une base de données, après son instanciation dans main.js, les autres modules souhaitant utiliser la base de données doivent l'instancier à nouveau.
Par exemple main.js
let redisApi;
redisApi = new RedisApi();
utilisateur.js
console.log(redisApi);
À ce moment, un message d'erreur sera signalé indiquant que la variable redisApi n'est pas définie !
Mais après être passé à l'utilisation de eval pour initialiser les variables, c'était différent
main.js
eval (`let redisApi;`);
redisApi = new RedisApi();
Pour le moment, d'autres modules peuvent partager la variable redisApi.
Pourquoi eval peut faire cela, quelqu'un peut-il expliquer ?
Ici, vous devez comprendre comment les modules de Node.js sont chargés.
Semblable à un navigateur, il existe un objet global dans l'environnement d'exécution de Node.js, qui est similaire à l'objet fenêtre DOM.
De même,
Regardez directement l'explication du code :
On peut donc le comprendre en le comparant avec votre code. Ce qui prend réellement effet, c'est que la variable déclarée par
redisApi = new RedisApi();
,eval (
`let redisApi;`);
est dans une autre portée indépendante et est en fait inaccessible.Ceci est une citation du texte original d'es6. C'est ainsi que la spécification est définie, vous avez donc le résultat, cependant, il n'est généralement pas recommandé de jouer de cette façon ;