首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从控制台调用coffeescript函数

从控制台调用coffeescript函数
EN

Stack Overflow用户
提问于 2011-07-20 09:32:44
回答 4查看 10.3K关注 0票数 16

使用coffeescript和Rails 3.1.0.rc4。代码如下:

代码语言:javascript
复制
yourMom = (location) ->
  console.log location

yourMom "wuz hur"

当页面加载时,它会正确地输出"wuz hur“。但是当我试着打电话给

代码语言:javascript
复制
yourMom("wuz hur")

从chrome js控制台(就像我有时测试正常的JS函数一样),我得到一个"ReferenceError: yourMom is not defined“。

coffeescript生成的函数是否以这种方式可用?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-13 17:48:05

共享全局方法/变量的一种更简单的方法是使用@,这意味着。

代码语言:javascript
复制
@yourMom = (location) ->
  console.log location

yourMom "wuz hur"

更好的语法和更容易阅读,但我不鼓励您创建全局方法/变量

票数 39
EN

Stack Overflow用户

发布于 2011-07-20 09:37:02

之所以会发生这种情况,是因为coffeescript将所有内容包装在一个闭包中。该代码JavaScript输出实际上是:

代码语言:javascript
复制
(function() {
  var yourMom;
  yourMom = function(location) {
    return console.log(location);
  };
  yourMom("wuz hur");
}).call(this);

如果您想要将其导出到全局作用域,您可以这样做:

代码语言:javascript
复制
window.yourMom = yourMom = (location) ->
  console.log location

代码语言:javascript
复制
this.yourMom = yourMom = (location) ->
  console.log location
票数 13
EN

Stack Overflow用户

发布于 2011-07-20 13:20:25

我不太确定Rails,但是CoffeeScript编译器有一个选项(--bare)可以在不使用函数包装器的情况下进行编译。玩起来很好,但它确实污染了全局范围。

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

https://stackoverflow.com/questions/6756044

复制
相关文章

相似问题

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