node.js - Questions sur eval dans nodejs
大家讲道理
大家讲道理 2017-05-31 10:38:28
0
2
627

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 ?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(2)
迷茫

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.

黄舟

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 ;

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal