什么是JSC_MULTIPLE_VAR_DEF?

时间:2012-01-29 15:34:40

标签: javascript google-closure-compiler

我花了半个小时找到这个问题的答案。将它和答案一起发布在这里,希望能节省半个小时。

编译此代码时

"use strict";
/**
 * These are the flower and the instrument used in the code below.
 */
var flower, instrument;

Closure Compiler给了我们这个警告

JSC_MULTIPLE_VAR_DEF: declaration of multiple variables with shared type information at line 6 character 0
var flower, instrument;
^

这个含糊的警告是什么意思?

3 个答案:

答案 0 :(得分:5)

您应该为此提交错误: http://code.google.com/p/closure-compiler/issues/list

如果您使用@type,它应该只会抱怨。即使这样,我也不清楚这是否合适。看起来我应该能够做到这一点:

/** @type {string} */
var a,b,c;  // all strings

答案 1 :(得分:3)

这可能是Closure Compiler的一个错误。它假设您在以/ **开头的注释中使用@type,即使您没有。

可以通过将注释标记从/ **更改为/ *来解除警告。 E.g。

"use strict";
/*
 * These are the flower and the instrument used in the code below.
 */
var flower, instrument;

答案 2 :(得分:1)

Closure Compiler允许您在注释中定义变量的类型信息。像这样:

/**
 * The amount of beats in each minute.
 * @type {number}
 */
var bpm = 89;

即使示例中的注释不包含任何类型信息,编译器也会抱怨如果存在这样的类型信息,它只会用于第一个变量( flower )和不是第二个(乐器。)