bugfix> javascript > 投稿

私は index.html を持っていますこのようなファイルといくつかの .js および .css ファイル。 私がしたいのは、2つの .js を作ることですファイルが相互に通信するため、あるファイルから別のファイルに変数を渡したい。

index.html

<html lang='en'>
    <head>
        <meta charset='utf-8'>
        <script src='https://d3js.org/d3.v5.js' charset='utf-8'></script>
        <script src='https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js'></script>  
        <link href='/css/a.css' rel='stylesheet'/>
        <link href='/css/b.css' rel='stylesheet'/>
        <link href='/css/c.css' rel='stylesheet'/>
    </head>
    <body>
        <div id='a'></div>
        <div id='c'></div>
        <div id='b'></div>
    </body>
    <script src='/script/a.js' rel='script'/></script>
    <script src='/script/b.js' rel='script'/></script>
    <script src='/script/c.js' rel='script'/></script>
</html>

a.js

var MODULE = (function a() {
    var my = {};
    my.aToPass = 'a'; // variable to pass at file b.js
    var first = 5;
    var second = 'example';
    function test() {
        my.firstToPass = first + 100; // variable to pass at file b.js
        console.log(first);
    }
    return my;
}());

b.js

(function b() {
    console.log('my:', MODULE.my); // undefined
    console.log('my:', MODULE.aToPass); // undefined
    console.log('my:', MODULE.firstToPass); // undefined
    // other code...
}());

私が欲しいのは、変数 aToPass を渡すことですおよび firstToPassa.js の ) b.js へファイル。どうやってやるの?

IIFEアプローチを使用してコードを複数のファイルに分割しましたが、より良い方法がある場合は、コード構造を変更してもかまいません。

回答 2 件
  • オブジェクトのインスタンスを b に渡すことができます 。

    あなたの b で  無名関数...

    (function b(MODULE) {
        console.log('my:', MODULE.my); // undefined
        console.log('my:', MODULE.aToPass); // undefined
        console.log('my:', MODULE.firstToPass); // undefined
        // other code...
    })(MODULE);
    
    

  • const MODULE = (function () {
          var my = {};
          my.aToPass = 'a'
          var first = 5;
          var second = 'example';
          (function test() {
            my.firstToPass = first + 100; // variable to pass at file b.js
          })();
    
          return my;
        })();
    
        module.exports = MODULE;
    
    

    およびb.js:

    const MODULE = require('./try');
        (function b() {
          console.log('my:', MODULE.my); // undefined
          console.log('my:', MODULE.aToPass); // my: a
          console.log('my:', MODULE.firstToPass); // my: 105
          // other code...
        })();
    
    

あなたの答え