node.js - nodejs の eval に関する質問
大家讲道理
大家讲道理 2017-05-31 10:38:28
0
2
629

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

例: main.js

リーリー

ユーザー.js

リーリー

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

メイン.js

リーリー

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

大家讲道理
大家讲道理

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

全員に返信(2)
迷茫

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

リーリー

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

いいねを押す +0
黄舟

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

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート