2016-12-05 5 views
7

ES6 ने template strings को बैकटिक्स ` द्वारा सीमित किया।बैकटिक्स के लिए स्ट्रिंग डिलीमीटर बदलना: संभावित प्रभाव?

जो मामलों बैकटिक द्वारा एक स्ट्रिंग के आसपास एकल ' या डबल " उद्धरण की जगह होगी एक अलग परिणाम उत्पन्न करते हैं, या ऐसी ही किसी असुरक्षित हो सकता है?

कोड के अंदर मौजूदा बैकटिक्स से बचने के लिए ऑपरेशन के हिस्से के रूप में किया जाता है।

// before 
var message = "Display backtick ` on screen"; 

// after 
var message = `Display backtick \` on screen`; 

मैं समझता हूँ कि किसी भी ${...} युक्त स्ट्रिंग विफल हो जाएगा के रूप में यह (गलत) एक प्लेसहोल्डर के रूप में व्याख्या की जाएगी। क्या कोई अन्य प्रासंगिक पैटर्न हैं?


संदर्भ: यह development of a JS compression tool के लिए है जो स्वचालित रूप से इनपुट कोड को संसाधित करता है। उत्तरार्द्ध, और इसमें मौजूद तार उपयोगकर्ता द्वारा प्रदत्त हैं, इसलिए मेरे पास इसकी सामग्री पर कोई नियंत्रण नहीं है। केवल एक ही धारणा यह है कि यह वैध जावास्क्रिप्ट है।

निष्पादन पर्यावरण किसी भी हालिया ब्राउज़र या Node.js. द्वारा कर सकते हैं

+0

इस तरह कुछ के बारे में क्या: var message = "हैलो, मैं माइक हूं, आपसे मिलकर अच्छा लगा"। क्या यह \ 'हैलो, मैं माइक माइक के रूप में बाहर आऊंगा, यह आपसे मिलकर अच्छा लगा \'? –

+0

@ सरीराहल ओपी ने * स्ट्रिंग * के चारों ओर कोट्स को बदलने के बारे में पूछा। –

+3

क्या मैं सुझाव दे सकता हूं कि आप खोज-और-प्रतिस्थापन के साथ ऐसा करने के बारे में सोचने के बजाय, प्रसंस्करण कोड के लिए एक पार्सर का उपयोग करें? http://esprima.org/ में आपकी सभी सुविधाएं होनी चाहिए। – Tomalak

उत्तर

2

आप string literals और no-substitution-templates के व्याकरण की जांच कर सकते हैं।
` बनाम ' बनाम " और ${ का विशेष अर्थ जो आपने पहले ही उल्लेख किया है, केवल दो रूपों के बीच लाइन ब्रेक अलग-अलग हैं। हम लाइन निरंतरता ("बच निकले लाइनब्रेक्स") को अनदेखा कर सकते हैं क्योंकि आपका मिनीफायर उन्हें किसी भी तरह से अलग कर देगा, लेकिन स्ट्रिंग अक्षर के अंदर सादे लाइन ब्रेक टेम्पलेट्स के अंदर मान्य नहीं हैं, इसलिए यदि आप आगे और आगे कनवर्ट करते हैं तो आपको उन पर ध्यान देना होगा कुंआ। यदि आपके स्ट्रिंग शाब्दिक में \n है तो आप उन्हें एक और बाइट सहेजने के लिए भी उपयोग कर सकते हैं।

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