CoffeeScript编译了这段代码:
mod = (num) -> num % 2
成:
// Generated by CoffeeScript 1.7.1
(function() {
var mod;
mod = function(num) {
return num % 2;
};
}).call(this);
如何调用此JavaScript立即函数?
例如,我想致电mod.apply(5)
。
答案 0 :(得分:1)
你可以这样做:
mod = ((num) -> num % 2) 5
不与mod.apply(5)
相同,5
不会调用“mod”函数,使“num”为this
。相反,它会调用函数,使5
为1
,我怀疑你真的想做什么。
上面代码的结果是将“mod”设置为5 % 2
,即mod5 = mod 5
。
现在,如果您只是想稍后调用“mod” ,您可以使用原始代码然后执行此操作:
{{1}}
答案 1 :(得分:1)
您可以使用--bare
或-b
进行编译,但不会生成包装函数:
coffee -c -b file.js
或者您可以将变量导出到window
:
window.mod = (x) -> x % 2
或者在NodeJS中:
mod = (x) -> x % 2
module.exports = {mod}
apply
使用上下文调用函数,我们称之为this
,以及一组参数。 apply
与call
的不同之处在于您可以动态地执行可变参数函数(具有任意数量参数的函数)。你会这样使用它:
mod.apply null, [2]
null
是上下文,在这种情况下无关紧要,因为mod
函数不使用this
。
如果你这样写:
mod = -> @ % 2
然后你可以用上下文来调用它:
mod.call 2
mod.apply 2