Javascript 为什么多次运行CoffeeScript编译器会产生不同的输出?
我正在尝试编译非常简单的咖啡脚本:Javascript 为什么多次运行CoffeeScript编译器会产生不同的输出?,javascript,node.js,coffeescript,Javascript,Node.js,Coffeescript,我正在尝试编译非常简单的咖啡脚本: n=4; 使用代码 require('coffee-script')。编译(str); 我在解决方案中多次这样做,而不缓存结果。第一次这样做时,我得到: (函数(){ var n; n=4; }).打电话(这个); 但如果我再打一次,我会得到: n = 4; 为什么不在第二轮中使用包装器函数,以及如何使它每次都给出相同的结果。我相信由于范围问题可能会出现这种情况(即不同的输出) 通常,变量只需要一条var语句。在第一次调用中,似乎创建了所有需要的声明,
n=4;
使用代码
require('coffee-script')。编译(str);
我在解决方案中多次这样做,而不缓存结果。第一次这样做时,我得到:
(函数(){
var n;
n=4;
}).打电话(这个);
但如果我再打一次,我会得到:
n = 4;
为什么不在第二轮中使用包装器函数,以及如何使它每次都给出相同的结果。我相信由于范围问题可能会出现这种情况(即不同的输出)
通常,变量只需要一条var
语句。在第一次调用中,似乎创建了所有需要的声明,而第二次调用只是重用它们
我相信这可能是因为使用了相同的
require('coffee-script')
实例。Compile在第二次编译时由于某种原因无法工作。CoffeeScript代码总是包装在函数中。无法复制,每次我都会得到相同的(包装)代码
使用
coffee.compile(str,{bare:false})
强制执行闭包包装器。好的,有没有办法禁用“coffee script”的缓存,所以我每次都要求它刷新?另外,仍然需要var
语句,因为第一位get的代码被包装在一个自调用函数中,所以第二次调用assignn
将把它分配给全局
对象。因此,建议我启动第二个进程也是这样吗?或者有其他方法访问API吗?无法复制,我每次都会得到相同的(包装)代码。您是否尝试过coffee.compile(str,{bare:false})
?发布您的代码。@Ricardo已经修复了它,这是我之前未定义options.bare的惊人行为。不过,很高兴它被分类了。如果你想把它作为答案贴出来,我会接受的。