`无法实例化非构造函数`Closure Compiler警告?

时间:2011-03-14 16:32:49

标签: javascript jquery debugging compiler-construction instantiation

亲爱的朋友们,我应该怎么处理Closure Compiler输出的这些错误警告? 非常感谢你对这种特殊错误的想法和代码侵权:

  1. JSC_WRONG_ARGUMENT_COUNT:函数parseInt:使用1个参数调用。函数至少需要2个参数且不超过2个参数。在593行12字符 if (parseInt(jQuery.browser.version) < 7) {

  2. JSC_NOT_A_CONSTRUCTOR:无法在第708行字符15实例化非构造函数 lightbox = new Lightbox(this, opts.lightbox);

  3. JSC_NOT_A_CONSTRUCTOR:无法在第1265行第19个字符串实例化非构造函数 var scroller = new Scroller($(this), opts);

2 个答案:

答案 0 :(得分:18)

数字1:
此警告意味着您在函数调用中传入了错误数量的参数。

Here是一个更好的解释

2号&amp; 3:
编译器期望所有构造函数都使用JSDoc标记@constructor标记,如下所示:

/**
 * @constructor
 */
function MyClass() {
  this.foo = 'bar';
}
var obj = new MyClass();
alert(obj.foo);

Here是一个更好的解释。

答案 1 :(得分:3)

对于第一个,它希望您将两个参数传递给parseInt:value和radix。对于基于10的数字(这是你的情况),你需要(不需要,但它想要你)调用

parseInt(jQuery.browser.version, 10)