gpt4 book ai didi

javascript - CoffeeScript - 功能正在运行,但它是 "is not a function"

转载 作者:行者123 更新时间:2023-11-30 15:31:51 24 4
gpt4 key购买 nike

感谢您的帮助。我有一个简单的函数来一个一个地显示(或隐藏)元素,它是用 CoffeeScript 编写的。该功能运行良好,但我的 Chrome 在控制台中抛出此消息

"Uncaught TypeError: elemRoll(...) is not a function"

  • 我做错了什么?

 elemRoll = (elemName, delayDuration, animationDuration) -> 
amount = $(elemName).length
$(elemName).each (amount) ->
$(this).delay(delayDuration * amount).animate { 'opacity': 1 }, animationDuration

$(document).ready ->
do elemRoll '.epoch-container .epoch-item', 190, 160

最佳答案

您不需要 do 来简单地调用一个函数,而且您很少会想为此目的使用 do。你的 ready-handler 应该是:

$(document).ready -> 
elemRoll '.epoch-container .epoch-item', 190, 160
# No `do` in here

CoffeeScript's do旨在立即执行匿名函数:

CoffeeScript provides the do keyword, which immediately invokes a passed function, forwarding any arguments.

通常在需要闭包包装器时用作循环体:

for e in array
do (e) -> ...

您还可以使用它在循环外执行匿名函数:

do (a) -> ...

变成这个 JavaScript:

(function(a) { /* ... */ })(a);

您还可以使用它来执行不带括号的无参数函数,因此 do f 变为 f()

你的问题是:

do a b

被解释为

do a(b)

这变成了这个 JavaScript:

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', 190, 160返回一个函数。

此外,您需要非常小心并与您的空格保持一致,否则可能会发生非常困惑的事情。

关于javascript - CoffeeScript - 功能正在运行,但它是 "is not a function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42128464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com