Maison > Questions et réponses > le corps du texte
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 ?
迷茫2017-05-31 10:40:28
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 :
//module1.js
console.log(global.testStr)//undefined
testStr = '123';//!!关键点!!,这等于是给全局对象设置了一个名为testStr属性。
console.log(global.testStr)//123
var test = function () {
console.log(testStr);
}
exports.test = test;
//index.js
require('./module1.js')
console.log(testStr)
//输出:123
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.
黄舟2017-05-31 10:40:28
Le code Eval est le texte source fourni à la fonction eval intégrée. Plus précisément, si le paramètre de la fonction eval intégrée est une chaîne, il est traité comme un programme ECMAScript pour une invocation particulière de. eval est la partie code globale de ce programme.
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 ;