为什么编译后的CoffeeScript不能通过JSHint检查?

4

我使用了来自CoffeeScript官网的示例,但是它无法验证。

for循环就是一个完美的例子,如果你使用CoffeeScript语句,它不会在if语句中包含body部分。

  • 应该为'{',但看到的是'child'。
  • 可能违反了严格模式的规定。
  • 构造函数名称应以大写字母开头。
  • 'insertclassnamehere'已经被定义。
  • 你是想返回条件语句还是赋值语句?
  • 应该为'===',但看到的是'=='。
  • 意外的'~'。
  • 应该为'!==',但看到的是'!='。
  • 在for in语句中,应将body部分包装在if语句中,以过滤掉原型中不需要的属性。

1
从他们的网站上可以看到,“JSHint是一种检测JavaScript代码中错误和潜在问题的工具。” JavaScript不是CoffeeScript。它们是完全不同的语言。此外,您的问题应该至少包括您要验证的代码示例。如果没有这个,我们怎么能给您任何有用的信息呢? - user229044
4
我不是在试图证明Coffeescript的有效性,而是在验证生成的JavaScript代码是否有效。就像我之前所说的一样,这些代码示例来自他们网站上的内容。 - Kirk Strobeck
Linter != debugger。它们是完全不同的东西。完全不同。而且,一个linter并不比一个debugger更像一个验证器。它们是代表不同概念的不同单词和含义。你不能“让”编译后的CoffeeScript做任何事情。CoffeeScript的编译方式基本上与你无关,他们可以在任何时候自由更改。你需要的是一个CoffeeScript linter。 - user229044
请查看jashkenas对https://github.com/jashkenas/coffee-script/issues/2500的回复。 - Kinjal Dixit
这是一个非常合理的问题,我认为。我想要调试JS Coffeescript生成的代码。因此,我想要检查它是否有效。 - NimChimpsky
显示剩余4条评论
1个回答

8
我的编译过的CoffeeScript在JShint中无法验证,为什么?
简短的答案是:因为CoffeeScript编译器的创建者认为这不是必要的。
对于由开发人员编写和维护的代码进行代码检查是有意义的。它通过使代码可读来避免人为错误。
然而,编译器生成的代码具有完全不同的要求。可读性通常不是问题。更重要的是代码高效且占用空间小。
如果你真的需要这个功能,那么你需要修改CoffeeScript编译器源代码。

“通过使代码易读,它可以避免人为错误。”(不适用于通常编写在JSLint中验证的代码) - NimChimpsky
2
Coffeescript的编译和linting应该被视为互补的。Coffeescript本身已经在很大程度上帮助我们编写可维护的JS代码,避免了不良的JS语法和实践。但是,在编写Coffeescript时,我仍然会遇到一些JS wtih JSHint可以避免的错误(例如拼写错误的变量引用等)。虽然Coffeescript现在具有一些linting功能,但还是需要注意。 - arcseldon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接