検索

ホームページ  >  に質問  >  本文

node.js - nodejs の eval に関する質問

現在、インスタンス変数を共有したいと考えています。たとえば、データベースに接続するには、main.js でデータベースがインスタンス化された後、データベースを使用する他のモジュールがデータベースを再度インスタンス化する必要があります。

例: main.js

リーリー

ユーザー.js

リーリー

現時点では、redisApi 変数が未定義であることを示すエラー メッセージが報告されます。
しかし、変数の初期化に eval を使用するように切り替えた後は、状況が異なりました。

メイン.js

リーリー

現時点では、他のモジュールは redisApi 変数を共有できます。
なぜ eval でこれができるのでしょうか? 誰か説明できますか?

大家讲道理大家讲道理2776日前645

全員に返信(2)返信します

  • 迷茫

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

    ここでは、Node.js のモジュールがどのようにロードされるかを理解する必要があります。
    ブラウザと同様に、Node.js の実行環境には DOM ウィンドウ オブジェクトに似たグローバル オブジェクトがあります。
    同様に、
    コードの説明を直接見てください:

    リーリー

    それをあなたのコードと比較することでそれを理解することができます。実際に効果があるのは、redisApi = new RedisApi();eval (`let redisApi;`);によって宣言された変数が別の独立したスコープにあり、実際にはアクセスできないということです。

    返事
    0
  • 黄舟

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

    Eval コードは、組み込み eval 関数に提供されるソース テキストです。より正確には、組み込み eval 関数のパラメーターが文字列の場合、特定の呼び出しの ECMAScript プログラムとして扱われます。 eval は、そのプログラムのグローバル コード部分です。

    これは es6 のオリジナルのテキストからの引用です。このように設定されているため、結果は得られますが、この方法でプレイすることは一般的に推奨されません。

    返事
    0
  • キャンセル返事