Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对咖啡脚本中作用域的误解_Javascript_Jquery_Coffeescript - Fatal编程技术网

Javascript 对咖啡脚本中作用域的误解

Javascript 对咖啡脚本中作用域的误解,javascript,jquery,coffeescript,Javascript,Jquery,Coffeescript,为什么我得到一个错误未捕获类型错误:在下面的代码中预加载不是一个函数 preload = (event, ui) -> preload = new createjs.LoadQueue() preload.loadFile('/images/medium/missing.png') return $('.tool').draggable( { revert: true drag: (event, ui) -> preload(event,

为什么我得到一个错误
未捕获类型错误:在下面的代码中预加载不是一个函数

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()
。尽管有错误,函数仍会执行。陷阱在哪里?

回答您最初的问题


在大多数带有闭包的语言(包括JavaScript)中,内部的预加载和外部的预加载可以并且将是分开的。但CoffeeScript不允许在更深的范围内隐藏或定义同一变量,这样做将覆盖全局变量。阅读了解有关coffeescript作用域的更多信息

您是否尝试将
preload
作为
drag
属性的值传递,而不是创建匿名函数来调用它?就像
drag:preload
。编译后的代码对我来说很好,运行也很好。@reda是的,在这种情况下我得到
ReferenceError:e没有定义
,整个应用程序崩溃。我想reda建议的是
drag:preload
,而不是
drag:preload(e,ui)
。我的错了。现在它工作得很好。但是,有人能向我解释为什么第一个例子是不好的做法吗?