首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Coffeescript中使用setTimeout()

如何在Coffeescript中使用setTimeout()
EN

Stack Overflow用户
提问于 2013-10-30 00:52:46
回答 2查看 19.8K关注 0票数 24

我似乎不能使用setTimeout()来调用我自己的函数。我可以使用setTimeout调用alert(),但不能调用我自己编写的函数。下面是重现问题的最简单的代码:

我有以下coffeeScript

代码语言:javascript
复制
    setTimeout(run, 1000)

    run = () ->
        console.log("run was called!")

它会生成以下Javascript

代码语言:javascript
复制
    // Generated by CoffeeScript 1.6.3
    (function() {
      var run;

      setTimeout(run, 1000);

      run = function() {
        return console.log("run was called!");
      };

    }).call(this);

控制台中不会打印任何内容。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-30 01:04:54

代码语言:javascript
复制
run = () ->
    console.log("run was called!")
setTimeout(run, 1000)

使用function run(){}语法声明的函数依赖于javascript function hoisting,但是coffeescript将它们声明为变量:var run = function(){},因此必须在引用函数之前定义它,否则当您将它传递给setTimeout时,它仍然是undefined

票数 26
EN

Stack Overflow用户

发布于 2015-03-24 12:02:14

匿名选项:

彼得是完全正确的。但您也可以不声明变量而使用setTimeout

代码语言:javascript
复制
setTimeout ->
    console.log 'run was called!'
, 1000

收益率:

代码语言:javascript
复制
(function() {
    setTimeout(function() {
        return console.log("run was called!")
    }, 1e3)
}).call(this);
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19664481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档