2

我正在尝试编译非常简单的咖啡脚本:

n = 4;

使用代码

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

我在我的解决方案中多次执行此操作,而不缓存结果。我第一次这样做时,我得到:

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

但如果我再次调用它,我会得到:

n = 4;

为什么我不第二次获得包装函数,我怎样才能让它每次都给出相同的结果。

4

3 回答 3

1

无法重现,我每次都得到相同的(包装的)代码。

用于coffee.compile(str, { bare: false })强制执行闭包包装。

于 2012-08-18T01:15:17.210 回答
0

由于范围问题,我相信它可能会发生(即不同的输出)。

通常你只需要一个var变量声明。似乎在第一次调用期间创建了所有需要的声明,第二次调用只是重用它们。

我相信这可能是因为使用了相同的require('coffee-script')实例。

于 2012-08-16T11:17:10.847 回答
0

由于某种原因,第二次编译无法正常工作。CoffeeScript 代码总是包装在一个函数中。

于 2012-08-16T13:48:49.517 回答