2013-06-13 12 views
6

मैं सोच रहा हूं कि Google क्लोजर जैसे प्रीप्रोसेसर/कंपाइलर के उपयोग के माध्यम से जावास्क्रिप्ट में अज्ञात फ़ंक्शन घोषणा को छोटा करने का कोई तरीका है या नहीं। मुझे लगता है कि यह कॉलबैक के लिए काफी साफ होगा।बेनामी फ़ंक्शन घोषणा शॉर्टेंड जावास्क्रिप्ट

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

मैं कुछ Clojure से प्रेरित वाक्य रचना के लिए देख रहा हूँ के रूप में पालन:

उदाहरण के लिए, सामान्य रूप से मैं एक qunit परीक्षण का मामला इस तरह से लिखते हैं

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

क्या यह संभव है?

+2

के माध्यम से अपने कार्यों के साथ छोटा CoffeeScript प्रयास करें -> (http : //coffeescript.org/#literals) –

+1

ओएमजी एक और सवाल। यह मेरा पूरा जीवन कहां रहा है? :) लेकिन सभी विकल्पों को समाप्त करने के लिए, मैं यह देखने के लिए खोला गया प्रश्न देख सकता हूं कि कोई क्लोजर प्लगइन है जो एक ही कार्य को पूरा कर सकता है। हालांकि धन्यवाद। –

+1

चूंकि क्लोजर अपने इनपुट को पार्स करने के लिए एक वास्तविक जावास्क्रिप्ट पार्सर का उपयोग करता है, इसलिए मुझे लगता है कि प्लगइन्स शायद वे जो कुछ हासिल कर सकते हैं उसमें थोड़ा बाधा डालती हैं। जावास्क्रिप्ट के रूप में '# (ठीक है बी) पार्स करने का कोई तरीका नहीं है। – 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

आपके इनपुट के लिए धन्यवाद –

संबंधित मुद्दे