调用函数会使Reference错误为未定义函数

时间:2019-10-31 07:31:55

标签: javascript

我有2个JS文件-first.jssecond.js
我直接在call()中定义了一个函数second.js,而没有将其包含在任何内容下。

#second.js

function call(){
        console.log('output');
}

现在,当我从first.js调用它时,由于函数call()未定义,它给出了参考错误。

#first.js

 function test(){
  call();
 }

我正在main.html

中按以下顺序调用这两个单独的js文件
<script type = "text/javascript" src="second.js"> </script>

<script type = "text/javascript" src="first.js"> </script>

由于先于第二个而包括第二个,因此功能call()已经存在,也没有包装在其他任何功能内,为什么出现引用错误?

编辑:-根据建议,我检查了second.js,它具有导致问题的onclick功能-element.onclick = function(){ $.get('{{url_for('python_function')}}'); }。我将其更改为element.onclick = function(){ $.get('{{url_for(python_function)}}'); },现在一切正常。

1 个答案:

答案 0 :(得分:1)

您的代码中有一些错误。首先,您必须将import中的代码second.js放入first.js中。看起来像这样:

#first.js

import <name variable whatever you want> from '<path to second.js>';

 function test(){
  <name of the variable you made in the first line>();
 }

test();

接下来,您需要export中的功能second.js,所以您可以这样做:

#second.js

export default function call(){
    console.log('output');
}

最后,在HTML中,您希望将first.js的类型指定为module而不是text/javascript,如下所示:

<script type = "text/javascript" src="second.js"> </script>

<script type = "module" src="first.js"> </script>

编辑

正如@connexo所指出的那样,您不需要在HTML中包含second.js,因为您是直接在first.js中导入函数。因此,您可以改为在HTML中执行此操作:

<script type = "module" src="first.js"> </script>

希望这会有所帮助!让我知道它是否对您有用