首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动执行coffeescript

自动执行coffeescript
EN

Stack Overflow用户
提问于 2015-01-11 13:23:37
回答 2查看 186关注 0票数 0

自调用咖啡记录

代码语言:javascript
复制
$ -> 
  alert "Hello CoffeeScript!"

编译成

代码语言:javascript
复制
$(function() {
  return alert("Hello CoffeeScript!");
});

现在,相同的代码-- $被任何其他变量替换->

代码语言:javascript
复制
hello= -> 
  alert "Hello CoffeeScript!"

以上代码-不自行执行。

给出一个$ 变量如何启用自执行(不包括jQuery库)?(jQuery在这里扮演角色吗?)

我知道您必须使用docoffeescript中具有自调用函数--这不是我的问题(请不要重复)。

-coffeescript初学者

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-11 13:29:10

代码是而不是自动执行。它只是给jQuery一个函数引用。稍后,当DOM准备好时(如果已经准备好的话),调用该函数的是jQuery

详细信息在jQuery文档中

如何给$变量启用自执行(不包括jQuery库)?

如果要调用该函数,那么显然包含了jQuery (或者其他定义函数并将其附加到$并调用传递它的函数的东西)。

( jQuery在这里扮演一个角色吗?)

是。

我知道您必须使用do在coffeescript中具有自调用函数

如果您的意思是立即调用而不是自用(一个常见的用词不当),则不,您没有:

代码语言:javascript
复制
(() ->
  alert 'Hello!'
)()

...which翻译为:

代码语言:javascript
复制
(function() {
  return alert('Hello!');
})();

...which定义了一个函数并立即调用它。

或者如果您真正指的是self-invoking (例如,递归):

代码语言:javascript
复制
(foo = (n) ->
  alert 'Call ' + n
  if n > 0
    foo(n - 1);
)(10)

...which翻译为:

代码语言:javascript
复制
var foo;

(foo = function(n) {
  alert('Call ' + n);
  if (n > 1) {
    return foo(n - 1);
  }
})(10);

...which定义了一个自称为10次的函数。

票数 3
EN

Stack Overflow用户

发布于 2015-01-11 13:30:00

不,$标识符没有什么特别之处。代码段之间的实际区别是标识符后面的= -没有,它使用函数作为参数调用它,使用它分配函数。

代码语言:javascript
复制
hello -> 
  alert "Hello CoffeeScript!"
// compiles to:
hello(function() {
  return alert("Hello CoffeeScript!");
});

代码语言:javascript
复制
hello = -> 
  alert "Hello CoffeeScript!"
// compiles to:
var hello;
hello = function() {
  return alert("Hello CoffeeScript!");
};

因此,如果您的hello函数确实调用了给定的回调(作为有吗?),您的函数表达式将在第一种情况下执行(不需要赋值)。

注意,这不是“自调用”,因为调用函数的是hello/$。对于生平 (通常称为“自调用”),可以使用关键字

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27887565

复制
相关文章

相似问题

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