cari

Rumah  >  Soal Jawab  >  teks badan

node.js - Soalan tentang eval dalam nodejs

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?

大家讲道理大家讲道理2742 hari yang lalu635

membalas semua(2)saya akan balas

  • 迷茫

    迷茫2017-05-31 10:40:28

    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.

    balas
    0
  • 黄舟

    黄舟2017-05-31 10:40:28

    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

    balas
    0
  • Batalbalas