我正在尝试编译非常简单的咖啡脚本:
n = 4;
使用代码
require('coffee-script').compile(str);
我在我的解决方案中多次执行此操作,而不缓存结果。我第一次这样做,我得到:
(function() {
var n;
n = 4;
}).call(this);
但如果我再打电话给我,我会得到:
n = 4;
为什么我不能第二次获得包装函数,我怎样才能让它每次都得到相同的结果。
答案 0 :(得分:1)
无法重现,我每次都得到相同的(包装好的)代码。
使用coffee.compile(str, { bare: false })
强制执行闭包装。
答案 1 :(得分:0)
我认为由于范围问题可能会发生(即不同的产出)。
通常,变量只需要一个var
语句。似乎在第一次调用期间,所有需要的声明都被创建,第二次调用只是重用它们。
我认为可能会因为使用相同的require('coffee-script')
实例而发生。
答案 2 :(得分:0)
第二次编译因某种原因无法正常工作。 CoffeeScript代码始终包含在函数中。