相关疑难解决方法(0)

如何在CoffeeScript中定义全局变量?

在Coffeescript.org上:

bawbag = (x, y) ->
    z = (x * y)

bawbag(5, 10) 
Run Code Online (Sandbox Code Playgroud)

会编译为:

var bawbag;
bawbag = function(x, y) {
  var z;
  return (z = (x * y));
};
bawbag(5, 10);
Run Code Online (Sandbox Code Playgroud)

通过node.js下的coffee-script编译包装如下:

(function() {
  var bawbag;
  bawbag = function(x, y) {
    var z;
    return (z = (x * y));
  };
  bawbag(5, 10);
}).call(this);
Run Code Online (Sandbox Code Playgroud)

文件说:

如果要为其他要使用的脚本创建顶级变量,请将它们作为属性附加到窗口或CommonJS中的exports对象上.存在运算符(如下所述)为您提供了一种可靠的方法来确定添加它们的位置,如果您的目标是CommonJS和浏览器:root = exports?这个

如何在CoffeeScript中定义全局变量."将它们作为窗口上的属性附加"是什么意思?

javascript coffeescript

317
推荐指数
7
解决办法
12万
查看次数

为什么要使用javascript函数包装器(在coffeescript中添加)".call(this)"

当我使用最新的(1.0)咖啡脚本时,一个简单的javascript输出看起来像这样(默认情况下):

(function() {
  var a;
  a = 1;
}).call(this);
Run Code Online (Sandbox Code Playgroud)

是什么.CALL(本)做,哪些是添加它的原因是什么?

javascript coffeescript

31
推荐指数
2
解决办法
6228
查看次数

在找不到app/assets/javascript中创建的CoffeeScript函数

在我的CoffeeScript文件中clients.js.coffee,

myFunction = (variable) ->
Run Code Online (Sandbox Code Playgroud)

我在CoffeeScript中创建了一个函数app/assets/javascript.但是当我尝试调用该函数时,控制台向我显示错误,指出找不到函数.

我检查页面的来源,它显示脚本已加载:

<script src="/assets/clients.js?body=1" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

这是在脚本源中找到的内容:

(function() {
  var myFunction;

  myFunction = function(variable) {}
}).call(this);
Run Code Online (Sandbox Code Playgroud)

知道我错过了什么吗?我应该怎么做才能调用这个函数?

javascript ruby-on-rails coffeescript ruby-on-rails-3

24
推荐指数
2
解决办法
7581
查看次数

摆脱CoffeeScript的封装包装

如何省略将变量隐藏在全局范围内的自动闭包?

(function() {
  // my compiled code
}).call(this);
Run Code Online (Sandbox Code Playgroud)

只是玩弄CoffeeScript + SproutCore,当然,我更愿意保留原样:在这种情况下,没有必要保护任何东西不被覆盖.

我知道我可以使用@this.在声明,但这不是太优雅.

coffeescript

20
推荐指数
2
解决办法
7863
查看次数

Coffeescript将函数包装在一个函数中

出于某种原因,coffeescript编译器在编译时将所有.coffee文件包装在函数中.例如,如果我有test.coffee:

class TestClass
    constructor: (@value) ->

    printValue: () ->
        alert(@value)

printAValue = () -> 
    test = new TestClass()
    test.printValue()
Run Code Online (Sandbox Code Playgroud)

然后我得到test.js:

(function() {
  var TestClass, printAValue;
  TestClass = (function() {
    function TestClass(value) {
      this.value = value;
    }
    TestClass.prototype.printValue = function() {
      return alert(this.value);
    };
    return TestClass;
  })();
  printAValue = function() {
    var test;
    test = new TestClass();
    return test.printValue();
  };
}).call(this);
Run Code Online (Sandbox Code Playgroud)

我的简单html文件不适用于此:

<html>
    <head>
        <script src="test.js"></script>
    </head>
    <body onload="printAValue()">
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我之前没有使用过很多JS,我不会怀疑咖啡编译器,但它应该如何工作?怎么样

javascript coffeescript

8
推荐指数
2
解决办法
4922
查看次数