जावास्क्रिप्ट ES6 के नए टेम्पलेट स्ट्रिंग (फ़ायरफ़ॉक्स में, यदि यह मायने रखता है) का परीक्षण करते समय, मैंने उनके प्रकारों में कुछ विसंगतियों को देखा।जावास्क्रिप्ट ES6 टेम्पलेट स्ट्रिंग्स के लिए असंगत प्रकार
मैं एक कस्टम समारोह में परिभाषित किया गया, इस तरह:
function f(a) {
console.log(typeof(a));
console.log(a);
}
पहले, मैं समारोह "सामान्य रूप से" परीक्षण किया है, टेम्पलेट स्ट्रिंग के आसपास कोष्ठकों का उपयोग।
f(`Hello, World!`)
जैसी उम्मीद थी, इस string
और Hello, World!
का एक प्रकार सामने आए कंसोल के लिए outputted था।
फिर मैंने फ़ंक्शन शॉर्टैंड को बिना किसी कोष्ठक के बुलाया, और असंगतताएं हुईं।
f`Hello, World!`
प्रकार object
बन गया, और Array [ "Hello, World!" ]
कंसोल के लिए outputted था।
दूसरी विधि का उपयोग करते समय टेम्पलेट स्ट्रिंग को सरणी में क्यों लपेटा गया था? क्या यह फ़ायरफ़ॉक्स में बस एक बग है (ES6 एक नया मानक है), या यह व्यवहार किसी कारण से अपेक्षित है?
'कंसोल.लॉग \ '$ {1} b $ {2} c \';' क्या हो रहा है बेहतर समझने के लिए '' {{}} $ {2} सी \ 'प्रयास करें। कोष्ठक को छोड़कर, आपने अपने कथन का अर्थ पूरी तरह से बदल दिया है: आप बस फ़ंक्शन को और कॉल नहीं कर रहे हैं, लेकिन आप एक * टैग किए गए टेम्पलेट * का उपयोग कर रहे हैं। हाँ, यह वाक्यविन्यास बेकार है। – Blackhole