为什么多次运行CoffeeScript编译器会产生不同的输出?
我试图编译很简单的咖啡脚本:为什么多次运行CoffeeScript编译器会产生不同的输出?
n = 4;
使用代码
require('coffee-script').compile(str);
我在我的解决了这个多次做,没有缓存的结果。我第一次这样做,我得到:
(function() {
var n;
n = 4;
}).call(this);
但如果我再次调用它,我得到:
n = 4;
为什么我没有拿到包装函数的第二次圆的,我怎样才能让它每次都有相同的结果。
无法重现,我每次都得到相同的(包装)代码。使用coffee.compile(str, { bare: false })
来执行封闭包装。
由于范围问题,我认为可能会发生(即不同的产出)。
正常情况下,您只需要一个var
变量语句。而且似乎是在第一次调用期间所有需要的声明都已创建,而第二次调用只是重用了它们。
我相信这可能是由于使用相同的require('coffee-script')
实例。
好的,有没有办法禁用'coffee-script'的缓存,所以我每次都需要新鲜的? 另外,'var'语句仍然是需要的,因为第一位get的代码被封装在一个自调用函数中,所以第二次调用'n'将把它赋给'global'对象。 – ForbesLindesay 2012-08-16 12:04:07
编译只是第二次出于某种原因没有工作。 CoffeeScript代码总是包装在一个函数中。
那么我建议开启第二个过程?或者有另一种方法来访问API? – ForbesLindesay 2012-08-16 14:11:04
无法重现,我每次都得到相同的(包装)代码。你尝试过'coffee.compile(str,{bare:false})'吗?发布您的代码。 – 2012-08-16 20:49:48
@Ricardo修复它,令人惊讶的行为,因为之前我没有选择options.bare。不过,很高兴它被分类。如果你想发布它作为答案,我会接受它。 – ForbesLindesay 2012-08-17 08:28:17