2

非常に単純なコーヒー スクリプトをコンパイルしようとしています。

n = 4;

コードの使用

require('coffee-script').compile(str);

結果をキャッシュせずに、ソリューションでこれを複数回行います。初めてこれを行うと、次のようになります。

(function() {
    var n;
    n = 4;
}).call(this);

しかし、もう一度呼び出すと、次のようになります。

n = 4;

2 回目にラッパー関数を取得しないのはなぜですか。また、毎回同じ結果を得るにはどうすればよいですか。

4

3 に答える 3

1

再現できません。毎回同じ (ラップされた) コードを取得します。

coffee.compile(str, { bare: false })クロージャ ラッパーを適用するために使用します。

于 2012-08-18T01:15:17.210 に答える
0

2回目は何らかの理由でコンパイルが機能しませんでした。CoffeeScript コードは常に関数でラップされます。

于 2012-08-16T13:48:49.517 に答える
0

スコープの問題により、それが発生する可能性があると思います(つまり、異なる出力)。

通常、変数に必要なvarステートメントは 1 つだけです。そして、最初の呼び出し中に必要なすべての宣言が作成され、2 回目の呼び出しでそれらが再利用されたようです。

require('coffee-script')同じインスタンスが使用されているために発生する可能性があると思います。

于 2012-08-16T11:17:10.847 に答える