node.js - Soalan tentang eval dalam nodejs
大家讲道理
大家讲道理 2017-05-31 10:38:28
0
2
649

Saya pada masa ini ingin berkongsi pembolehubah contoh. Sebagai contoh, untuk menyambung ke pangkalan data, selepas ia dijadikan instantiated dalam main.js, modul lain yang ingin menggunakan pangkalan data mesti membuat instantiat semula.

Sebagai contoh main.js

let redisApi;
redisApi = new RedisApi();

user.js

console.log(redisApi);

Pada masa ini, mesej ralat akan dilaporkan yang menunjukkan bahawa pembolehubah redisApi tidak ditentukan!
Tetapi selepas saya beralih kepada menggunakan eval untuk memulakan pembolehubah, ia berbeza

main.js

eval (`let redisApi;`);
redisApi = new RedisApi();

Pada masa ini, modul lain boleh berkongsi pembolehubah redisApi.
Kenapa eval boleh buat macam ni, ada sesiapa boleh jelaskan?

大家讲道理
大家讲道理

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

membalas semua(2)
迷茫

Di sini anda perlu memahami cara modul dalam Node.js dimuatkan.
Sama seperti pelayar, terdapat objek global dalam persekitaran pelaksanaan Node.js, yang serupa dengan objek tetingkap DOM.
Begitu juga,
Lihat penjelasan kod terus:


//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

Jadi kami boleh memahaminya dengan membandingkannya dengan kod anda Apa yang sebenarnya berkuat kuasa ialah pembolehubah yang diisytiharkan oleh redisApi = new RedisApi();eval (`let redisApi;`);ada dalam skop bebas yang lain dan sebenarnya tidak boleh diakses.

黄舟

Kod Eval ialah teks sumber yang dibekalkan kepada fungsi eval terbina dalam. Lebih tepat lagi, jika parameter kepada fungsi eval terbina dalam ialah String, ia dianggap sebagai Program ECMAScript untuk seruan tertentu eval ialah bahagian kod global Program itu.

Ini adalah petikan daripada teks asal es6 Ini adalah bagaimana spesifikasi ditetapkan, jadi anda mempunyai hasilnya, secara amnya tidak disyorkan untuk bermain dengan cara ini

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan