2013-06-13 4 views
6

Мне интересно, есть ли способ сократить анонимное объявление функции в JavaScript с использованием препроцессора/компилятора, такого как Google Closure. Я полагаю, что это было бы довольно аккуратно для обратных вызовов.Объявление анонимной функции сокращенно javascript

Например, как правило, я бы написать тест QUnit случай так:

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

Я завожусь Clojure вдохновил синтаксис, как следует:

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

Возможно ли это?

+2

Попробуйте CoffeeScript с его укоротить функций с помощью -> (HTTP : //coffeescript.org/#literals) –

+1

OMG другой вопрос. Где это была вся моя жизнь? :) Но ради исчерпания всех опций я оставлю вопрос открытым, чтобы увидеть, есть ли какой-либо плагин Closure, который может выполнить ту же задачу. Спасибо хоть. –

+1

Поскольку Closure использует фактический синтаксический анализатор JavaScript для анализа его ввода, я думаю, что плагины, вероятно, немного ограничены тем, что они могут выполнить. Невозможно разобрать '# (ok a b)' как JavaScript. – ruakh

ответ

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()); 
+0

спасибо за ваш вклад –

Смежные вопросы