【问题标题】:JSC_NOT_FUNCTION_TYPE google closure compilerJSC_NOT_FUNCTION_TYPE 谷歌闭包编译器
【发布时间】:2014-06-18 04:25:26
【问题描述】:

有没有办法摆脱警告

JSC_NOT_FUNCTION_TYPE 表达式不可调用

使用 google 闭包编译器打包 javascript 时?

var require = function(){};

var a=typeof require=="function"&& require;

function hello(name) {
   var x = 2;
   alert(a(x));
   alert('Hello, ' + name);  
}
hello('User X');

运行闭包编译器的在线帮助工具:http://closure-compiler.appspot.com/home

【问题讨论】:

    标签: javascript javascript-framework google-closure-compiler google-closure


    【解决方案1】:

    问题是如果require 不是函数,a 可能不是函数:

    var a=typeof require=="function"&& require;
    

    相反,您可以使用

    var a=typeof require=="function" ? require : function(){};
    

    【讨论】:

    • 谢谢@Oriol。问题是我不能(不想)更改该代码。这部分(var a=typeof require=="function"&& require;)是运行browserify生成的代码。
    • @sbr 如果您无法更改代码,我认为您无能为力。忽略警告即可。
    • 也许有一种方法可以指定关闭选项来忽略这一点。
    • @sbr 是的,我刚刚找到它:@warning_level quiet。见reference
    • @sbr 当然。如果您想获得除此之外的所有警告,请忽略它。无论如何,我不认为这是一种“通用风格”:检查它是否是一个函数有什么意义,如果不是,使用 false 代替?尝试调用它时也会抛出错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    相关资源
    最近更新 更多