我刚刚开始学习咖啡脚本,这很棒,但是很棘手..
我尝试将在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/