2017-12-20 58 views
8

में नेस्टेड टेम्पलेट स्ट्रिंग त्रुटि ने निम्न पंक्ति को नोड.जेएस में रन-टाइम त्रुटि में क्यों परिणाम दिया है?नेडेजेएस

var a = ````; 

फेंकता है:

TypeError: "" is not a function


Node.js संस्करणों 4.x, 6.x, 8.x और 9.x साथ परीक्षण किया गया

उत्तर

4

पहले दो बैकटिक रिक्त स्ट्रिंग हैं जबकि अगले दो tagged template literals के रूप में कार्य करेंगे जो इससे पहले फ़ंक्शन का आह्वान करेंगे। "" (खाली स्ट्रिंग) एक अनावश्यक कार्य नहीं है, यह एक त्रुटि फेंकता है।

Backticks calling a function

टेम्पलेट शाब्दिक में घोंसला बैकटिक करने के लिए

, यह फ़ॉरवर्ड स्लैश के साथ यह पूर्ववर्ती से बचने

console.log(`\`\``); 
3

क्योंकि आप अभिव्यक्ति में शामिल होने के किसी भी प्रकार के बिना तुरंत एक दूसरे के बगल दो टेम्पलेट शाब्दिक है यह। पार्सर पहचानता है कि टैग किए गए फ़ंक्शन कॉल के रूप में, String.raw`stuff here` की तरह। पहले `` का मूल्यांकन किया गया है, परिणाम "" में परिणामस्वरूप, और फिर जावास्क्रिप्ट इंजन उस खाली स्ट्रिंग को फ़ंक्शन के रूप में कॉल करने का प्रयास करता है, संसाधित टेम्पलेट शाब्दिक में गुजरता है। चूंकि खाली स्ट्रिंग फ़ंक्शन नहीं है, इसलिए आपको एक त्रुटि मिलती है।

आपको ""`` का उपयोग करके सीधे एक ही त्रुटि मिलती है। :-)

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

  • कोई संबंधित समस्या नहीं^_^