误解CoffeeScript中的范围

时间:2016-02-14 10:37:16

标签: javascript jquery coffeescript

为什么我在以下代码中收到错误Uncaught TypeError: preload is not a function

preload = (event, ui) ->
  preload = new createjs.LoadQueue()
  preload.loadFile('/images/medium/missing.png')
  return

$('.tool').draggable(
  {
    revert: true
    drag: (event, ui) ->
      preload(event, ui)
  })

我完全定义了preload()。尽管有错误,该函数仍会执行。渔获物在哪里?

1 个答案:

答案 0 :(得分:3)

回答原来的问题

在大多数带闭包的语言(包括JavaScript)中,内部预加载和外部预加载可以并且将是分开的。 CoffeeScript虽然不允许在更深的范围内进行阴影或定义相同的变量,但这样做会覆盖全局变量。有关coffeescript范围的更多信息,请阅读http://www.techrepublic.com/article/avoid-using-magic-numbers-and-string-literals-in-your-code/