从控制台调用coffeescript函数

Calling coffeescript functions from console

本文关键字:函数 coffeescript 调用 控制台      更新时间:2023-09-26

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

yourMom = (location) ->
  console.log location
yourMom "wuz hur"

当页面加载时,这将正确输出"wuz hur"。但当我试着呼叫

yourMom("wuz hur")

从chrome js控制台(因为我有时做测试正常的js函数),我得到一个"ReferenceError: yourMom是未定义"

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

共享全局方法/变量的一种更简单的方法是使用@,它的意思是:

@yourMom = (location) ->
  console.log location
yourMom "wuz hur"

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

这是因为coffeescript将所有内容包装在闭包中。该代码的JavaScript输出实际上是:

(function() {
  var yourMom;
  yourMom = function(location) {
    return console.log(location);
  };
  yourMom("wuz hur");
}).call(this);

如果你想把它导出到全局作用域,你可以这样做:

window.yourMom = yourMom = (location) ->
  console.log location

this.yourMom = yourMom = (location) ->
  console.log location

我不确定Rails,但CoffeeScript编译器有一个选项(——bare)来编译没有函数包装。

这个链接可能会解决您的问题Rails -从JavaScript调用CoffeeScript将函数包装在一个唯一的名称空间中,然后可以从任何地方

访问这些函数。