调用在Javascript库之外定义的函数

时间:2016-06-09 09:18:12

标签: javascript gruntjs video.js

我正在使用库。我试图修改它,因此它使用自定义播放器而不是HTML5播放器。 所以我用对自定义播放器的调用(比如 custFunc1())将函数调用替换为 play()等。这些调用在单独的文件中定义: custPlayer.js

因此,在我的 index.html 文件中,我将首先包含 custPlayer.js 文件,然后包含构建的文件。

然而问题是,在使用grunt构建video.js包时,我得到 custFunc1 未定义的错误,因此grunt无法创建video.js库。

现在我能够从一位同事那里了解到这一点 / * global custFunc1 * / 在我调用的包中的特定文件的开头 custFunc1 解决了这个问题。 grunt构建成功,它工作正常。

所以我想知道的是:

  1. 这是如何解决这个问题的,因为这与javascript中的注释完全相同,它如何区别对待并理解它表明函数定义将出现在库外?

  2. 全球这个词是javascript中的某种关键字吗?

  3. 除了我提到的内容之外,还有其他方法可以达到这个目的吗?

  4. 稍微不同的是,我想询问是否与大致相同?

1 个答案:

答案 0 :(得分:1)

你的javascript正在linted作为你的grunt进程的一部分,如果你查看你的项目文件夹的根目录,你应该看到像.jshintrc这样的文件或者这些行的东西(根据linter不同)。

您当前的设置意味着linter一次一个地通过您的.js文件,如果它遇到来自另一个文件的变量或函数,则会抛出您看到的错误。您可以关闭此检查或将custFunc1添加到已知全局变量的数组中。在jshint中你这样做 - https://github.com/gruntjs/grunt-contrib-jshint#jshintrc

{
  "globals": {
    "custFunc1": true
  }
}

全局变量可能已经存在于文件中,所以只需将custFunc1:true添加到它。

哦,回答问题1 - 注释类型语法告诉linter忽略它当前文件的设置,基本上覆盖了.jshintrc文件中的设置。

2 - 是的,它是jshintrc中的一个设置,你在文件本身中添加custFunc1而不是.jshintrc文件中的全局。

3 - 上面提到过。

4 - 从未使用过制造商,但是我相信它的预处理工具类似于