Javascript `无法实例化非constructior`Closure编译器警告?
亲爱的各位,我应该如何处理闭包编译器输出的这些错误警告? 非常感谢您对这类错误的想法和代码改进:Javascript `无法实例化非constructior`Closure编译器警告?,javascript,jquery,debugging,compiler-construction,instantiation,Javascript,Jquery,Debugging,Compiler Construction,Instantiation,亲爱的各位,我应该如何处理闭包编译器输出的这些错误警告? 非常感谢您对这类错误的想法和代码改进: JSC_错误_参数_计数:函数parseInt:用1个参数调用。函数需要至少2个参数,但不超过2个参数。在第593行,字符12 if(parseInt(jQuery.browser.version)
if(parseInt(jQuery.browser.version)<7){
lightbox=新的lightbox(这个,opts.lightbox);
var scroller=new scroller($(this),opts);
第一名:
此警告意味着您在函数调用中传入了错误数量的参数 这是一个更好的解释 第2号和第3号:
编译器希望所有构造函数都标记有JSDoc标记@constructor,如下所示:
/**
* @constructor
*/
function MyClass() {
this.foo = 'bar';
}
var obj = new MyClass();
alert(obj.foo);
是一个更好的解释。对于第一个,它希望您向parseInt传递两个参数:value和radix。对于基于10的数字(这是您的情况),您需要(实际上不需要,但它希望您)调用
您不必指定第二个参数,但应该:“虽然此参数是可选的,但始终指定它以消除读取器混淆并保证可预测的行为。未指定基数时,不同的实现会产生不同的结果。”@lwburk:我不是说你必须指定两个参数,我是说闭包编译器希望你指定-这就是它抱怨的。请取消你的否决票。那么,如果代码是由第三方提供的,作为一个已经被混淆的库,你该怎么办?这很难,我的朋友。除了你以前的“猜测与测试”,你别无选择。使用断点并询问对象属性…猜测它们是什么并测试结果-幸运的是,您可以使用设置jscomp_off并告诉编译器忽略此要求。您可能需要关闭的特定编译器检查是globalThis和checkTypes。使用命令行参数是--jscomp_off=checkTypes--jscomp_off=globalThis并使用闭包编译器进行gulp将是jscomp_off:['globalThis','checkTypes']
parseInt(jQuery.browser.version, 10)