function A() {
function B() {
...
}
B();
}
कार्य B
हर बार बनाया गया है A
कहा जाता है या उस पर कुछ कैशिंग है। इसे स्थानीय बना नहीं रहा है:क्या स्थानीय फ़ंक्शन घोषणाएं कैश की गई हैं?
function A() {
B();
}
function B() {
...
}
एक महत्वपूर्ण प्रदर्शन सुधार?
क्या यह एक स्टाइल पसंद करने के लिए मान्य है? (B
इस मामले में A
के लिए एक सहायक कार्य है।) या दूसरे को गति के लिए अनुकूल होना चाहिए?
क्या इस शैली का उपयोग किया जाना चाहिए या पठनीयता के लिए टालना चाहिए?
स्थानीय मामले के लिए FF4 inlines B
की तरह लगता है और समारोह कॉल उपरि निकाल देता है।
अन्य ब्राउज़रों के बारे में क्या?
किसी अन्य के अंदर एक फ़ंक्शन घोषित करना बुरा है। आपके पहले उदाहरण बी() में एक अभिव्यक्ति होनी चाहिए थी। यहां देखें: http://stackoverflow.com/questions/1013385/what-is-the-difference-between-a-function-expression-vs-declaration-in-javascript – DanMan
ऐसा लगता है कि आपका परीक्षण केस सही नहीं है; आप वास्तव में कार्यों को निष्पादित नहीं कर रहे हैं, बस उन्हें घोषित कर रहे हैं। चेकआउट http://jsperf.com/inner- कार्यक्षमता- अनुकूलन। क्रोम अनुकूलित करने के लिए प्रतीत नहीं होता है। मुझे संदेह है कि कोई इंजन होगा। – Matt
@ मैट ओह .. मैं उन्हें फोन करना भूल गया। कितना बेवकूफ :( – Raynos