तीर कार्यों ...
के रूप में मुझे यकीन है कि आप जानते हैं हूँ, javascript
arrow functions जो वास्तव में संक्षिप्त कर रहे हैं लेकिन दुर्भाग्य से अपने स्वच्छ regex
साथ काम नहीं करते समर्थन करता है।
मैंने आपके अच्छे regex
को अपने function
में परिवर्तित कर दिया है जो एक इनपुट के रूप में function
लेता है और बाद में सादगी के लिए खाली होता है या नहीं देता है। बस प्रदर्शित करने के लिए कैसे तीर कार्यों व्यापक रूप से इस्तेमाल किया जा सकता है, मैं इसे एक में डाल दिया:
function eF() {}
जो के रूप में हम isEmpty(eF)
रिटर्न true
साथ उम्मीद करेंगे:
isEmpty = f => /^function[^{]+\{\s*\}/m.test(f.toString())
अब, हम आसानी से एक खाली समारोह परीक्षण कर सकते हैं ।एक वास्तविक कार्य के साथ
और एक बार और अधिक:
function retOne() {return 1;}
जो फिर से के रूप में isEmpty(retOne)
रिटर्न false
साथ की उम्मीद है। तो फिर एक खाली एक प्रारंभ करने में
हालांकि, इस मुद्दे को मैं का सामना करना पड़ा तीर कार्यों के साथ था, हम मूल की एक छोटी वाक्य रचना है:
eF =() => {}
और उस के 'stringified'
संस्करण एक के लिए काफी अलग है पहले:
"() => {}"
में तो बेशक इस मामले कॉल isEmpty(eF)
रिटर्न false
जब हम true
चाहते हैं। मुझे यकीन है कि आप अगर सभी कार्यों (यानी arrow functions
सहित) खाली हैं परीक्षण करने के लिए आवश्यकता होती है, तो नहीं कर रहा हूँ, लेकिन यदि आप करते हैं, अपने regex
को संशोधित करने की आवश्यकता होगी ...
मैं महान नहीं कर रहा हूँ उन्हें अपने आप को लिखित रूप में, लेकिन एक प्रयास किया है
(param1, param2, …, paramN) => { statements }
(param1, param2, …, paramN) => expression
// equivalent to: (param1, param2, …, paramN) => { return expression; }
// Parentheses are optional when there's only one parameter name:
(singleParam) => { statements }
singleParam => { statements }
जो दिखाता है कि कर्ली कोष्ठक {...}
हमेशा जरूरी नहीं हैं: जोड़ी और एक और बात यह है कि आप विचार करना चाह सकते arrow functions
विशेष रूप से इस documentation का हिस्सा की उदार स्वभाव है। तो यह समारोह:
retOne =() => 1
valid
है और एक नया regex
और अधिक कठिन बनाने बना सकता है। एक कामकाज मैंने सोचा था कि f.toString()
से सभी घुंघराले ब्रैकेट को हटाएं:
str.replace(/[{}]/g, '')
।
और फिर वहां से regex test
के साथ काम करें।
उम्मीद है कि अगर आप arrow functions
चाहते हैं तो परीक्षण करने में सक्षम होने के लिए यह कुछ उपयोगी है।
अच्छा सवाल ... –
जे एस प्रतिबिंब की अवधारणा मुझे lol बना है, लेकिन समस्या के रूप में; आपने व्हाइटस्पेस और मल्टीलाइन के साथ निपटाया है, इसलिए यह उतना ही अच्छा है जितना यह मिलता है। – annakata
सभी निकायों की विधि निकायों को देखना न भूलें (यदि यह आपकी कल्पना है) – Brad