Lim*_* H. 6 javascript closures
我想知道是否有任何方法可以通过利用像Google Closure这样的预处理器/编译器来缩短JavaScript中的匿名函数声明.我认为回调非常简洁.
例如,通常我会这样写一个qunit测试用例:
test("Dummy test", function(){ ok( a == b );});
Run Code Online (Sandbox Code Playgroud)
我正在寻找一些Clojure启发的语法如下:
test("Dummy test", #(ok a b));
Run Code Online (Sandbox Code Playgroud)
可能吗?
小智 4
无需担心预处理器或编译器,您可以执行以下操作来缩短回调语法。这样做的一件事是,“this”的范围没有得到处理......但对于您的用例,我认为这并不重要:
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());
Run Code Online (Sandbox Code Playgroud)