यह बजाय एक बयान निम्नलिखित के साथ यह करने के लिए संभव है?
नहीं। यदि आप पाते हैं के रूप में, नामित समारोह अभिव्यक्ति (अपना पहला उदाहरण) broken engines — पर मैं अपने आप को देख रहा हूँ, IE8 और पहले को छोड़कर युक्त गुंजाइश (करने के लिए नाम नहीं जोड़ता है), इसलिए आप इसे संभव बनाने के लिए कुछ और किए बिना फ़ंक्शन को कॉल नहीं कर सकते हैं, और निश्चित रूप से घोषणा (आपका दूसरा उदाहरण) के साथ, आपको नाम दो बार देना होगा।
आपकी सर्वश्रेष्ठ शर्त शायद आगे बढ़ने और घोषणा और अलग कॉल (आपका दूसरा उदाहरण) करने के लिए संभव है।
हम संभवत: कुछ ऐसे कथनों के साथ आ सकते हैं जो तकनीकी रूप से "एक कथन" की परिभाषा को पूरा करेंगे, लेकिन यह कम होने की संभावना नहीं है।
तो संक्षिप्तता अपने लक्ष्य है, यह दो कथन है, लेकिन संक्षिप्त है:
var f = function() {
// Code
}, toBeExecutedImmediately = f;
f();
लेकिन जब अपेक्षाकृत संक्षिप्त, मैं कहेंगे स्पष्टता भुगतना पड़ता है। :-)
बेशक, यदि आप एक सहायक कार्य जोड़ते हैं तो कुछ भी संभव है। उदाहरण के लिए:
// The helper
function defineAndExecute(f) {
f();
return f;
}
// using it
var toBeExecutedImmediately = defineAndExecute(function() {
// Do work here
});
समारोह तकनीकी रूप से गुमनाम है, लेकिन आप var
के माध्यम से यह कह सकते हैं। (आप एक नामित समारोह अभिव्यक्ति यहाँ भी इस्तेमाल कर सकते हैं, लेकिन निश्चित रूप से उस लक्ष्य को हराने होगा — नाम दोहराने नहीं — मैं यह समझ के रूप में।)
साइड नोट: आपका पहला उदाहरण "एक नहीं है अनाम कार्य "। फ़ंक्शन का उचित नाम है, यह नाम फ़ंक्शन अभिव्यक्ति है। यह सिर्फ इतना है कि नामित फ़ंक्शन एक्सप्रेशन के साथ, फ़ंक्शन घोषणाओं के विपरीत, वह नाम उस दायरे में नहीं जोड़ा जाता है।
function DeclareAndExecute(name, func) {
window[name] = func;
func();
}
उपयोग::
DeclareAndExecute("toBeExecutedImmediately", function() {
//code here
});
Live test case
पहला वाला अज्ञात फ़ंक्शन नहीं है। इसका नाम है – Joren
आपने इसे हल किया है, आपको बस इसे आजमा देना है। – Theraot
@wared: नहीं, नाम 'toBeExecutedImedimedi' नाम को उस दायरे में जोड़ा नहीं जाएगा, इसलिए यह कहीं और उपलब्ध नहीं होगा। –