我正在尝试使用带有闭包编译器的Dojo 1.9版来构建我的项目。在我的项目中,我使用dgrid版本1.1,并为列过滤定义了扩展。在构建项目时,关闭会抱怨在关键字中使用JavaScript 作为函数:
dojo.js.uncompressed.js:24719: ERROR - Parse error. missing name after . operator
filter = filter.in(column, columnsList);
在JavaScript中定义css类时,我也遇到与 class 关键字相同的问题,但我将其括在引号中。
有没有办法解决这个问题?
答案 0 :(得分:1)
这是完全有效的JavaScript。当上下文清晰时,允许关键字(和其他保留字)作为属性名称,因为它就在那里.¹
你可以像在自己的代码中一样处理CC的问题,尽管每次升级Dojo时都不得不重新修复它:
filter = filter["in"](column, filtersWithEmpty);
¹这是2009年ES5的变化。具体来说,在property accessor expressions中, IdentifierName 被允许在ES3(没有ES4)的地方,它必须是标识符(其中标识符 is defined as IdentifierName 但不是 ReservedWord ;因此class
和in
这样与 Identifier 不匹配,但匹配 IdentifierName )。