Coffescript函数——不是函数

coffescript function - not a function

本文关键字:函数 Coffescript      更新时间:2023-09-26

当我通过js2将javascript函数转换为coffeescript函数时,我遇到了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);
};

这里没有转换错误

function name(){...

是声明变量并将函数赋值为该变量的快捷方式。当写在函数或文件的开头时,相当于

var name;
name = function(){...

在JavaScript中,函数是"一等公民",这意味着它们是有效值,可以被赋值给变量。

现在,如果您试图在块之前调用函数,就会出现问题。它适用于第一种表示法,因为函数声明被提升到作用域的开始,但它不适用于后者,因为只有声明(var name;)而不是赋值(name = function(){...)被提升。这可能就是你遇到的问题。

算了,我算出来了,函数在定义之前就被调用了,抱歉了