执行即时功能

时间:2014-05-19 00:57:10

标签: javascript function coffeescript

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)

2 个答案:

答案 0 :(得分:1)

你可以这样做:

mod = ((num) -> num % 2) 5

mod.apply(5)相同,5不会调用“mod”函数,使“num”为this。相反,它会调用函数,使51,我怀疑你真的想做什么。

上面代码的结果是将“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,以及一组参数。 applycall的不同之处在于您可以动态地执行可变参数函数(具有任意数量参数的函数)。你会这样使用它:

mod.apply null, [2]

null是上下文,在这种情况下无关紧要,因为mod函数不使用this

如果你这样写:

mod = -> @ % 2

然后你可以用上下文来调用它:

mod.call 2
mod.apply 2