

coffeescriptはコンパイルされると即時関数に囲まれてしまいますが、この外に出したい場合はどうしたら良いのでしょうか?


CC BY-SA 3.0
2015-01-04T06:19:19.873
3014
2015-01-28T01:12:53.400
5855
question
coffeescript
coffeescriptで即時関数を使わない方法


coffee コマンドに渡すオプションに、 `-b` (--bare) オプションを付けてください。

（ただし、即時関数になっているのは変数名などがかち合わないように名前空間を調整しているので、このようにしてコンパイルすると、思わぬトラブルが起こる可能性があります。）

func.coffee :

[code]

    square = (x) -> x * x
    
    cube = (x) ->
        square(x) * x
    
[/code]

`coffee -c func.coffee` で出力された func.js :

[code]

    // Generated by CoffeeScript 1.7.1
    (function() {
      var cube, square;
    
      square = function(x) {
        return x * x;
      };
    
      cube = function(x) {
        return square(x) * x;
      };
    
    }).call(this);
    
[/code]

`coffee -b -c func.coffee` で出力された func.js :

[code]

    // Generated by CoffeeScript 1.7.1
    var cube, square;
    
    square = function(x) {
      return x * x;
    };
    
    cube = function(x) {
      return square(x) * x;
    };
    
[/code]


CC BY-SA 3.0
2015-01-04T06:28:44.740
3015
2015-01-04T06:28:44.740
4978
3014
answer


ブラウザで実行する場合に関数や変数を他ファイルのソースからも参照できるようにしたい、という意味でしたら

foo.coffee:

[code]

    window.foo = (x) ->
      console.info "x=#{x}"
    
[/code]

bar.js:

[code]

    foo("test")
    
[/code]

でも参照可能と思います


CC BY-SA 3.0
2015-01-28T01:12:53.400
5470
2015-01-28T01:12:53.400
7383
3014
answer