JavaScript 在 Dojo 构建中用作函数的关键字
JavaScript keyword used as function in Dojo build
我正在尝试使用带有闭包编译器的 Dojo 1.9 版来构建我的项目。在我的项目中,我使用的是 dgrid 1.1 版,并为列过滤定义了一个扩展。构建项目时,闭包抱怨使用 JavaScript in 关键字作为函数:
dojo.js.uncompressed.js:24719: ERROR - Parse error. missing name after . operator
filter = filter.in(column, columnsList);
在 JavaScript 中定义 css classes 时,class 关键字也有同样的问题,但我用引号括起来了。
有什么办法可以解决这个问题吗?
完全正确 JavaScript。当上下文清楚时,关键字(和其他保留字)可以用作 属性 名称。¹
您可以像在您自己的代码中一样解决 CC 的问题,尽管每次升级 Dojo 时都必须重新修复它是令人不快的:
filter = filter["in"](column, filtersWithEmpty);
¹ 这是 2009 年 ES5 中的一个变化。具体来说,在 property accessor expressions, IdentifierName was allowed where in ES3 (there was no ES4) it had to ben an Identifier (where Identifier is defined as IdentifierName 而不是 ReservedWord;所以 class
和 in
等不匹配 Identifier,但匹配 IdentifierName).
我正在尝试使用带有闭包编译器的 Dojo 1.9 版来构建我的项目。在我的项目中,我使用的是 dgrid 1.1 版,并为列过滤定义了一个扩展。构建项目时,闭包抱怨使用 JavaScript in 关键字作为函数:
dojo.js.uncompressed.js:24719: ERROR - Parse error. missing name after . operator
filter = filter.in(column, columnsList);
在 JavaScript 中定义 css classes 时,class 关键字也有同样的问题,但我用引号括起来了。
有什么办法可以解决这个问题吗?
完全正确 JavaScript。当上下文清楚时,关键字(和其他保留字)可以用作 属性 名称。¹
您可以像在您自己的代码中一样解决 CC 的问题,尽管每次升级 Dojo 时都必须重新修复它是令人不快的:
filter = filter["in"](column, filtersWithEmpty);
¹ 这是 2009 年 ES5 中的一个变化。具体来说,在 property accessor expressions, IdentifierName was allowed where in ES3 (there was no ES4) it had to ben an Identifier (where Identifier is defined as IdentifierName 而不是 ReservedWord;所以 class
和 in
等不匹配 Identifier,但匹配 IdentifierName).