无法从(document).ready()中的另一个.js文件调用函数

时间:2018-07-16 16:44:55

标签: javascript

我有2个文件。

main.js utils.js

main.js

$(document).ready( function() {
    function instantiate_point_clouds(viewer_settings, cloud_meta) {
    }
})

utils.js

$(document).ready( function() {

    instantiate_point_clouds(viewer_settings, cloud_meta) ---> This is 
    Uncaught ReferenceError: instantiate_point_clouds is not defined
})

这就是我调用这些js文件的方式。

<html>
  <head>
     <script src='/js/main.js'>
  </head>
  <body>
     <script src='/js/utils.js'>
  <body>
</html>

instantiate_point_clouds函数会执行异步调用,无论它是否在我在util.js之前调用main.js时都不起作用。该函数存在于main.js中,但说如果从utils.js中调用则未定义,这是否与$(document).ready()有关?

1 个答案:

答案 0 :(得分:1)

之外定义功能
$(document).ready()

因此它将在页面加载时进行解析,并可以在$(document).ready()上使用

正如注释中的Isaac Abramowitz所述,当您在示例代码中定义函数时,您正在将要传递给第二次调用的$(document).ready()的匿名函数范围内进行此操作(无论是否在同一文件中)都无法达到,因为它们不共享作用域。有关该主题的更多信息,请参见here

顺便说一句,您只能使用$(function(){})而不是$(document).ready()