什么原因导致/*global module:false*/在grunt.js中

TLi*_*dig 9 javascript node.js gruntjs

许多grunt.js脚本以:

/*global module:false*/
module.exports = function(grunt) {
Run Code Online (Sandbox Code Playgroud)

但是第一行评论的原因是什么?

Jam*_*ice 16

它是JSLint或JSHint的指令.它告诉JSLint/JSHint解析器标识符module是在别处定义的,因此它不会抛出错误,告诉您module未定义.没有它,解析器将遇到引用module并认为您正在尝试引用未定义的变量.

来自JSLint文档:

JSLint还识别一个/*global*/指令,该指令可以向JSLint指示此文件中使用的变量是在其他文件中定义的.该指令可以包含逗号分隔的名称列表.

JSHint文档:

除了选项之外,您还可以让JSHint知道它应该期望的全局变量:

    /*global DISQUS:true, jQuery:false */
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,JSHint将允许您覆盖DISQUS,但如果您尝试覆盖则会抱怨jQuery.