Javascript CoffeeScript-函数正在运行,但它是;不是一个函数;
谢谢你的帮助。我有一个简单的函数来逐个显示(或隐藏)元素,它是用CoffeeScript编写的。该功能运行良好,但我的Chrome会在控制台中抛出此消息 “未捕获类型错误:elemRoll(…)不是函数”Javascript CoffeeScript-函数正在运行,但它是;不是一个函数;,javascript,coffeescript,Javascript,Coffeescript,谢谢你的帮助。我有一个简单的函数来逐个显示(或隐藏)元素,它是用CoffeeScript编写的。该功能运行良好,但我的Chrome会在控制台中抛出此消息 “未捕获类型错误:elemRoll(…)不是函数” 我做错了什么 elemRoll=(elemName、delayDuration、animationDuration)-> 金额=$(elemName).length $(元素名称)。每个(金额)-> $(this).delay(delayDuration*amount).animate{
- 我做错了什么
elemRoll=(elemName、delayDuration、animationDuration)->
金额=$(elemName).length
$(元素名称)。每个(金额)->
$(this).delay(delayDuration*amount).animate{'opacity':1},animationDuration
$(文档).ready->
do elemRoll'.epoch container.epoch item',190、160
您不需要do
来简单地调用函数,并且很少希望为此使用do
。您的就绪处理程序应该是:
$(document).ready ->
elemRoll '.epoch-container .epoch-item', 190, 160
# No `do` in here
用于立即执行匿名函数: CoffeeScript提供
do
关键字,该关键字立即调用传递的函数,转发任何参数
通常,当您需要闭包包装器时,它用作循环体:
for e in array
do (e) -> ...
您还可以使用它在循环外执行匿名函数:
do (a) -> ...
变成以下JavaScript:
(function(a) { /* ... */ })(a);
a(b)();
您还可以使用它来执行无参数函数,而不使用括号,这样dof
就变成了f()
你的问题是:
do a b
被解释为
do a(b)
这就变成了JavaScript:
(function(a) { /* ... */ })(a);
a(b)();
因此,你的:
do elemRoll '.epoch-container .epoch-item', 190, 160
与写作相同:
f = elemRoll '.epoch-container .epoch-item', 190, 160
do f
CoffeeScript假设elemRoll'.epoch container.epoch item',190160
将返回一个函数
此外,您需要非常小心,并与您的空白保持一致,否则可能会发生非常混乱的事情