我遇到coffeescript问题,当我通过js2.coffee将javascript函数转换为coffeescript函数时,我在控制台中收到错误告诉我它不是函数。当我将coffeescript翻译回javascript时,我发现它不是一个功能,但它是一个变量。任何帮助将不胜感激!
这是我的js功能
function enterPasture (goat, xpos, ypos) {
map.addChild(goat);
goat.x = mapToPixelX(xpos, ypos);
goat.y = mapToPixelY(xpos, ypos);
};
这里是coffeescript翻译
enterPasture = (goat, xpos, ypos) ->
map.addChild goat
goat.x = mapToPixelX(xpos, ypos)
goat.y = mapToPixelY(xpos, ypos)
return
这里的翻译回到了javascript
var enterPasture;
enterPasture = function(goat, xpos, ypos) {
map.addChild(goat);
goat.x = mapToPixelX(xpos, ypos);
goat.y = mapToPixelY(xpos, ypos);
};
答案 0 :(得分:3)
这里没有转换错误。
function name(){...
是一个快捷方式,用于声明变量并将函数指定为该变量的值。当在函数或文件的开头写入时, 等同于
var name;
name = function(){...
在JavaScript中,函数是"first class citizens",这意味着它们是有效值,可以分配给变量。
现在,如果您在该块之前尝试调用 函数,则会出现问题。它适用于第一种表示法,因为函数声明是hoisted到范围的开头,但它不适用于后者,因为只有声明(var name;
),而不是赋值(name = function(){...
),被悬挂。这可能是你遇到的问题。
答案 1 :(得分:0)
没关系,我想通了,这个功能在定义之前被调用了,对不起每个人