6

我想知道是否有任何方法可以通过使用像 Google Closure 这样的预处理器/编译器来缩短 JavaScript 中的匿名函数声明。我认为回调会很整洁。

例如,通常我会这样写一个 qunit 测试用例:

test("Dummy test", function(){ ok( a == b );});

我正在寻找一些受 Clojure 启发的语法,如下所示:

test("Dummy test", #(ok a b));

可能吗?

4

1 回答 1

4

无需担心预处理器或编译器,您可以执行以下操作来缩短回调语法。与此有关的一件事是未处理“此”的范围……但是对于您的用例,我认为这并不重要:

var ok = function(a,b) {
  return (a==b);
};

var f = function(func) {
  var args = Array.prototype.slice.call(arguments, 1);

  return function() {
    return func.apply(undefined,args);
  };
};

/*
Here's your shorthand syntax
*/
var callback = f(ok,10,10);

console.log(callback());
于 2013-11-15T08:58:09.997 回答