如何从一个js文件到另一个js文件调用函数

时间:2020-05-20 12:25:55

标签: javascript ecmascript-6 frontend es6-modules

我在HTML中定义了一个模块类型的函数,我需要从同一HTML文件中包含的另一个js文件中调用该函数。当我从js文件中调用函数时,称为参考错误。

这就是我的HTML文件中的内容


<script src="../src/viewer.js"></script>
<script type="module" src="../pravintest/player.js"></script>

viewer.js 文件中,我有一个代码,在其中调用player.js中的函数 crossdatacheck(param)

这是我的player.js文件:

 import * as THREE from './threejs/build/three.module.js';
        import { GUI } from './threejs/examples/jsm/libs/dat.gui.module.js';
        import { OrbitControls } from './threejs/examples/jsm/controls/OrbitControls.js';
        import { NRRDLoader } from './threejs/examples/jsm/loaders/NRRDLoader.js';
        import { VolumeRenderShader1 } from './threejs/examples/jsm/shaders/VolumeShader.js';
        import { WEBGL } from './threejs/examples/jsm/WebGL.js';


        var renderer,
            scene,
            camera,
            controls,
            material,
            volconfig,
            cmtextures;

         function crossdatacheck(data) {
        console.log(data);
         }

我想从viewer.js文件中调用此函数。

当我从viewer.js调用函数时,出现错误-> 引用错误 crossdatacheck函数未在viewer.js中定义 谁能建议我该怎么做?

1 个答案:

答案 0 :(得分:3)

模块具有自己的范围,并且顶级var语句和function声明不创建全局变量。 (这很好,全局变量有问题。)

要处理此问题:

  1. export您要在模块外部使用的变量
  2. 更改用于加载 viewer.js <script>,以便将其作为模块加载
  3. 删除加载了 player.js
  4. <script>
  5. 将要使用的 player.js 中的变量与 viewer.js
  6. 中的import语句一起导入