为什么多次运行CoffeeScript编译器会产生不同的输出?

时间:2012-08-16 09:16:07

标签: javascript node.js coffeescript

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

n = 4;

使用代码

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

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

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

但如果我再打电话给我,我会得到:

n = 4;

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我认为由于范围问题可能会发生(即不同的产出)。

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

我认为可能会因为使用相同的require('coffee-script')实例而发生。

答案 2 :(得分:0)

第二次编译因某种原因无法正常工作。 CoffeeScript代码始终包含在函数中。