我正在尝试编译非常简单的咖啡脚本:
n = 4;
使用代码
require('coffee-script').compile(str);
我在我的解决方案中多次执行此操作,而不缓存结果。我第一次这样做时,我得到:
(function() {
var n;
n = 4;
}).call(this);
但如果我再次调用它,我会得到:
n = 4;
为什么我不第二次获得包装函数,我怎样才能让它每次都给出相同的结果。
我正在尝试编译非常简单的咖啡脚本:
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')
实例。
由于某种原因,第二次编译无法正常工作。CoffeeScript 代码总是包装在一个函数中。