对 CoffeeScript 中作用域的误解

Misunderstanding of scopes in CoffeeScript

本文关键字:误解 作用域 CoffeeScript      更新时间:2023-09-26

为什么我在以下代码中收到错误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() .尽管存在错误,该函数仍会执行。渔获在哪里?

回答您的原始问题

在大多数带有闭包的语言(包括JavaScript(中,内部预加载和外部预加载可以而且将是分开的。虽然 CoffeeScript 不允许在更深的范围内隐藏或定义相同的变量,这样做会覆盖全局变量。阅读本文,了解有关咖啡脚本范围的更多信息。