我刚刚开始学习咖啡脚本,这很棒,但是很棘手..

我尝试将在javascript中工作的代码转换为coffeescript

我失败了,在链接中我贴了3贴


js.js是可以正常工作的原始代码
cs.coffee是相同版本,但在coffeescript中
由cs的cs编译器版本翻译的Compiled.js


在翻译后的js中,我在返回地图的lambda某处出现“字符串不是函数”错误

gist source code link

最佳答案

coffeescript的@只是this.的简写


因此,您的原始js具有:

if (input1.val().length <= 4 ...


你的咖啡稿应该有

if   input1.val() <= 4



在原始js中具有$(this)的位置,您的coffeescript中仍然需要$(this)。所以

或@ input1.map(-> this.val()。match(/ \ s + / g))。length不为0


应该:

or   @input1.map(-> $(this).val().match(/\s+/g)).length not 0


我看不到其他任何问题-试试看,看看是否可以正常工作,或者是否仍然存在错误。

[编辑]

还有其他问题,与not 0以及包围曝光在很大程度上相关。这是一个有效的咖啡脚本:

    if input1.val() <= 4 \
    or (input1.map(-> $(this).val().match(/\s+/g)).length != 0) \
    or (input1.map(-> $(this).val().match(/[^A-Za-z0-9]/g)).length != 0)
    then input1.attr('id','error-highlight');
    else input1.attr('id','success-highlight');


它成为了:

  (function() {
    if (input1.val() <= 4 || (input1.map(function() {
      return $(this).val().match(/\s+/g);
    }).length !== 0) || (input1.map(function() {
      return $(this).val().match(/[^A-Za-z0-9]/g);
    }).length !== 0)) {
      input1.attr('id', 'error-highlight');
    } else {
      input1.attr('id', 'success-highlight');
    }
  }).call(this);


看起来不错。

关于javascript - 字符串不是Coffeescript中的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8941966/

10-13 09:13