ईसीएमएसक्रिप्ट टाइप कनवर्शन
- पिछला पृष्ठ ईसीएमएसक्रिप्ट अर्थक टाइप
- अगला पृष्ठ ईसीएमएसक्रिप्ट रेफरेंस टाइप
सभी कार्यक्रम डिजाइन भाषाओं के सबसे महत्वपूर्ण गुणों में से एक टाइप परिवर्तन करने की क्षमता है।
ECMAScript ने डेवलपर को बहुत सारे साधारण टाइप परिवर्तन के मथड़ी प्रदान किए हैं。
अधिकांश टाइप साधारण परिवर्तन के लिए मथड़ी हैं, कुछ वैश्विक मथड़ी जटिल परिवर्तन के लिए उपयोग की जा सकती हैं। जो भी मामला हो, ECMAScript में टाइप परिवर्तन एक संक्षिप्त कदम है।
स्ट्रिंग में बदलना
ECMAScript के बूलीन वैल्यू, संख्या और स्ट्रिंग के मूल मूल्य का आदर्श है कि वे फूटबॉल ऑब्जैक्ट हैं, यानी वे वास्तव में गुण और मथड़ी रखते हैं।
उदाहरण में, स्ट्रिंग के आकार को प्राप्त करने के लिए नीचे दिए गए कोड का उपयोग कर सकते हैं:
var sColor = "red"; alert(sColor.length); //आउटपुट "3"
भले "red" मूल टाइप की स्ट्रिंग हो, यह भी एक्सिस्टेंस लैंग्थ, जो स्ट्रिंग के आकार को भंडारित करता है।
संक्षेप में, 3 तरह के मूल टाइप बूलीन वैल्यू, संख्या और स्ट्रिंग सभी toString() मथड़ी का समाधान करते हैं, इनके मूल्य को स्ट्रिंग में बदल सकते हैं。
सूचना:आप शायद पूछें,
Boolean वर्ग के toString() विधि सिर्फ "true" या "false" आउटपुट करती है, परिणाम वे वे वे मान के आधार पर निर्धारित होते हैं:}
var bFound = false; alert(bFound.toString()); //आउटपुट "false"
Number वर्ग के toString() विधि बहुत विशेष है, इसके दो प्रकार के मोड हैं, अर्थातडिफ़ॉल्ट मोडऔरआधार मोडडिफ़ॉल्ट मोड में, toString() विधि सिर्फ दिए गए संख्या के मान को संबंधित स्ट्रिंग में आउटपुट करती है (चाहे वह वस्तुतः वस्तु भी हो, फ्लॉटिंग प्लेस हो या वैज्ञानिक गणना हो), जैसा कि नीचे दिया गया है:
var iNum1 = 10; var iNum2 = 10.0; alert(iNum1.toString()); //आउटपुट "10" alert(iNum2.toString()); //आउटपुट "10"
टिप्पणी:डिफ़ॉल्ट मोड में, संख्या को पहले के रूप में किसी भी प्रकार से घोषित किया जाए, Number वर्ग के toString() विधि द्वारा वापस की जाने वाली संख्या की दशमी प्रस्तुतीकरण है।इसलिए आठपदी या पंद्रहपदी लिखने के रूप में घोषित की गई संख्याएँ दशमी रूप में आउटपुट होती हैं。
Number वर्ग के toString() विधि के आधार मोड का उपयोग करके, अलग-अलग रूप मेंआधारसंख्या आउटपुट, उदाहरण के लिए द्विपदी का आधार 2 है, आठपदी का आधार 8 है, पंद्रहपदी का आधार 16 है。
आधारयह सिर्फ बाइस के आधार में बदलने के लिए एक अन्य जोड़़नी है, यह toString() विधि का पारामीटर है:
var iNum = 10; alert(iNum.toString(2)); //आउटपुट "1010" alert(iNum.toString(8)); //आउटपुट "12" alert(iNum.toString(16)); //आउटपुट "A"
पहले के उदाहरण में, संख्या 10 को 3 अलग-अलग रूप में आउटपुट किया गया था, अर्थात द्विपदी रूप, आठपदी रूप और पंद्रहपदी रूप।HTML में प्रत्येक रंग को पंद्रहपदी रूप में प्रस्तुत किया जाता है, HTML में संख्या का संभालन करते समय इस कार्यकारीता को बहुत ही उपयोगी लगता है。
टिप्पणी:संख्या पर toString(10) को कॉल करना toString() के समान है, वे दोनों संख्या के दशमी रूप को वापस करते हैं。
देखें:
देखें जेवास्क्रिप्ट संदर्भ हैंडबुकद्वारा प्रदान किए गए toString() विधि के बारे में विस्तृत जानकारी:
नंबर में बदलना
ECMAScript ने दो तरीकों को नंबर के रूप में बदलने के लिए प्रदान किया है, जो parseInt() और parseFloat() हैं.
जैसा कि आपको आशा हो सकती है, पहली विधि वैल्यू को पूर्णांक में बदलती है, दूसरी विधि वैल्यू को दशमलव में बदलती है. इन विधियों को केवल String टाइप के लिए आमंत्रित किया जाना चाहिए; अन्य टाइपों के लिए वापस NaN दिया जाता है.
parseInt()
parseInt() और parseFloat() दोनों विधियाँ स्ट्रिंग को नंबर के रूप में जाँचने से पहले ध्यानपूर्वक विश्लेषण करती हैं.
parseInt() विधि पहले स्थान 0 पर की जाँच करती है, ताकि यह जाँच करे कि वह एक वैध नंबर है या नहीं; अगर नहीं, तो इस विधि वापस NaN देती है और अन्य कार्य को नहीं करती. लेकिन अगर चरित्र वैध नंबर है, तो इस विधि स्थान 1 पर की जाँच करती है, इसी तरह की परीक्षा करती है. यह प्रक्रिया अवैध नंबर के चरित्र तक जारी रहती है, जब तक कि parseInt() इस चरित्र के पहले सभी चरित्रों को नंबर में बदले नहीं देती.
उदाहरण के लिए, यदि "12345red" स्ट्रिंग को पूर्णांक में बदलना है, तो parseInt() विधि 12345 बयाना देगी, क्योंकि उसे चरित्र r को देखकर जांच प्रक्रिया रुक जाती है.
बाइनरी स्ट्रिंग में शामिल नंबर का शब्दांक नक्काशी सही तरीके से नंबर में बदला जाता है, उदाहरण के लिए "0xA" 10 नंबर में बदला जाता है. हालांकि, स्ट्रिंग "22.5" 22 में बदला जाता है, क्योंकि अंक के लिए दशमलव को अवैध चरित्र माना जाता है.
कुछ उदाहरण इस प्रकार हैं:
var iNum1 = parseInt("12345red"); //बयाना 12345 var iNum1 = parseInt("0xA"); //बयाना 10 var iNum1 = parseInt("56.9"); //बयाना 56 var iNum1 = parseInt("red"); //बयाना NaN
parseInt() विधि में आधार मोड भी है, जो द्विपद, आठवींद्रज, शंशाद्रज, या किसी अन्य द्रज के बाइनरी स्ट्रिंग को पूर्णांक में बदल सकती है. आधार parseInt() विधि के दूसरे पारामीटर से निर्दिष्ट होता है, इसलिए शंशाद्रज के मान को पढ़ने के लिए parseInt() विधि को इस तरह आमंत्रित करना चाहिए:
var iNum1 = parseInt("AF", 16); //बयाना 175
स्वाभाविक है, द्विपद, आठवींद्रज, या फिर दसवींद्रज (मूलभूत मोड) पर, parseInt() विधि इस तरह आमंत्रित की जा सकती है:
var iNum1 = parseInt("10", 2); //बयाना 2 var iNum2 = parseInt("10", 8); // वापस 8 देता है var iNum3 = parseInt("10", 10); // वापस 10 देता है
यदि दशमी संख्या के पास पहले से आगे के 0 हैं, तो बेस 10 को इस्तेमाल करना बेहतर है, इससे आठारहमी के रूप में अनचाहा रूप से पाया जाना नहीं होगा। उदाहरण के लिए:
var iNum1 = parseInt("010"); // वापस 8 देता है var iNum2 = parseInt("010", 8); // वापस 8 देता है var iNum3 = parseInt("010", 10); // वापस 10 देता है
इस कोड में, दोनों पंक्तियाँ चरित्र "010" को एक संख्या के रूप में पढ़ाती हैं। पहली पंक्ति इसे आठारहमी के रूप में पढ़ती है, जैसा कि दूसरी पंक्ति (बेस 8) के रूप में पढ़ा जाता है। अंतिम पंक्ति (बेस 10) को बढ़ाती है, इसलिए iNum3 अंत में 10 होता है。
देखें
देखें जेवास्क्रिप्ट संदर्भ हैंडबुकparseInt() विधि के बारे में जानकारी प्रदान करता है:parseInt()का उपयोग कर सकते हैं。
parseFloat()
parseFloat() विधि parseInt() विधि के समान तरीके से व्यवहार करती है, स्थान 0 से प्रत्येक चरित्र को देखती है, जब तक कि वह पहली अवैध चरित्र नहीं मिले, फिर इस चरित्र से पहले के चरित्रों को संख्या में बदल देती है।
बदले हुए, इस विधि के लिए, पहली बार आने वाला बिंदु एक वैध चरित्र है। यदि दो बिंदु होते हैं, तो दूसरा बिंदु अवैध माना जाएगा। parseFloat() इस बिंदु से पहले के चरित्रों को संख्या में बदल देगा। इसका मतलब है कि शब्दचिह्न "11.22.33" 11.22 के रूप में पढ़ा जाएगा。
parseFloat() विधि के एक अन्य अलग तरीका यह है कि शब्दचिह्न दशमीय फ्लोटिंग पॉइंट संख्या के रूप में प्रस्तुत करना है, न कि आठारहमी या सोलहवींमी। इस विधि को पहले से आगे के 0 को नज़रअंदाज़ कर देता है, इसलिए आठारहमी संख्या 0102 इसे 102 के रूप में पढ़ा जाएगा। शब्दचिह्न 0xA के लिए, इस विधि को NaN देता है, क्योंकि फ्लोटिंग पॉइंट में, x एक वैध चरित्र नहीं है।टिप्पणी:परीक्षण के अनुसार, विशिष्ट ब्राउज़र का प्रयोग करने वाला इस्पात 0 देता है, न कि NaN।
इसके अलावा, parseFloat() विधि में बेस मॉडल नहीं है
यहाँ parseFloat() विधि के कुछ उदाहरण हैं:
var fNum1 = parseFloat("12345red"); // वापस 12345 देता है var fNum2 = parseFloat("0xA"); // वापस NaN देता है var fNum3 = parseFloat("11.2"); // वापस 11.2 देता है var fNum4 = parseFloat("11.22.33"); // वापस 11.22 देता है var fNum5 = parseFloat("0102"); //वापस 102 var fNum1 = parseFloat("red"); //वापस NaN
देखें
देखें जेवास्क्रिप्ट संदर्भ हैंडबुकparseFloat() विधि के बारे में जानकारी दी गई है:parseFloat()का उपयोग कर सकते हैं。
बलिएशी परिवर्तन
आप इसके साथबलिएशी परिवर्तन (type casting)ट्रांसफॉर्म करने वाली वैल्यू के तरह को संभालने के लिए इस्तेमाल करें। बलिएशी परिवर्तन के द्वारा विशेष वैल्यू पर पहुंच सकते हैं, भले ही वह अन्य तरह की हो।
संपादक की टिप्पणी:cast का अर्थ "मिलान" है, जो "बलिएशी परिवर्तन" के अर्थ के साथ पूरी तरह से मेल खाता है।
ECMAScript में उपलब्ध 3 तरह के बलिएशी परिवर्तन निम्नांकित हैं:
- Boolean(value) - दिए गए वैल्यू को Boolean में बदलें;
- Number(value) - दिए गए वैल्यू को नंबर में बदलें (यह गैर-शून्य या फ्लॉटिंग पॉइंट्स भी हो सकता है);
- String(value) - दिए गए वैल्यू को स्ट्रिंग में बदलें;
इन तीनों फ़ंक्शनों में से एक के द्वारा वैल्यू को ट्रांसफॉर्म करने से एक नई वैल्यू बनी होगी, जो मूल वैल्यू से प्रत्यक्ष ट्रांसफॉर्म की गई वैल्यू को संग्रह करती है। इससे अप्रत्याशित परिणाम आ सकते हैं।
Boolean() फ़ंक्शन
जब ट्रांसफॉर्म करने वाली वैल्यू को कम से कम एक अक्षर वाली स्ट्रिंग, गैर-0 नंबर या ऑब्जैक्ट होता है, Boolean() फ़ंक्शन तो true लॉगिक रूप से वापस करेगा। अगर वैल्यू खाली स्ट्रिंग, नंबर 0, undefined या null होता है, तो यह false लॉगिक रूप से वापस करेगा।
Boolean फ़ंक्शन के बलिएशी परिवर्तन का परीक्षण करने के लिए नीचे के कोड का उपयोग कर सकते हैं:
var b1 = Boolean(""); //false - खाली स्ट्रिंग var b2 = Boolean("hello"); //true - गैर-खाली स्ट्रिंग var b1 = Boolean(50); //true - गैर-शून्य नंबर var b1 = Boolean(null); //false - null var b1 = Boolean(0); //false - शून्य var b1 = Boolean(new object()); //true - ऑब्जैक्ट
Number() फ़ंक्शन
Number() फ़ंक्शन का बलिएशी परिवर्तन parseInt() और parseFloat() विधियों के समान है, लेकिन यह पूरी वैल्यू को ही ट्रांसफॉर्म करता है, न कि हिस्सेदार वैल्यू।
आपको याद है, parseInt() और parseFloat() विधियाँ केवल पहले अवैध अक्षर के पहले की स्ट्रिंग को ही ट्रांसफॉर्म करती हैं, इसलिए "1.2.3" को क्रमश: "1" और "1.2" में ट्रांसफॉर्म किया जाएगा।
用 Number() 进行强制类型转换,"1.2.3" 将返回 NaN,因为整个字符串值不能转换成数字。如果字符串值能被完整地转换,Number() 将判断是调用 parseInt() 方法还是 parseFloat() 方法。
下表说明了对不同的值调用 Number() 方法会发生的情况:
用法 | 结果 |
---|---|
Number(false) | 0 |
Number(true) | 1 |
Number(undefined) | NaN |
Number(null) | 0 |
Number("1.2") | 1.2 |
Number("12") | 12 |
Number("1.2.3") | NaN |
Number(new object()) | NaN |
Number(50) | 50 |
String() 函数
最后一种强制类型转换方法 String() 是最简单的,因为它可把任何值转换成字符串。
要执行这种强制类型转换,只需要调用作为参数传递进来的值的 toString() 方法,即把 12 转换成 "12",把 true 转换成 "true",把 false 转换成 "false",以此类推。
अनिवार्य रूपांतरण करने और toString() मेथड को बुलाने के बीच एकमात्र अंतर यह है कि null और undefined मूल्यों को अनिवार्य रूपांतरण करके गलती के बिना चरित्र उत्पन्न किया जा सकता है:
var s1 = String(null); //"null" var oNull = null; var s2 = oNull.toString(); //गलती पैदा करेगा
ECMAScript जैसे कमजोर प्रकार भाषा को हानिकरण करते समय, अनिवार्य प्रकार रूपांतरण बहुत ही उपयोगी होता है, लेकिन इस रूपांतरण के लिए सही मूल्य को सुनिश्चित करना चाहिए。
- पिछला पृष्ठ ईसीएमएसक्रिप्ट अर्थक टाइप
- अगला पृष्ठ ईसीएमएसक्रिप्ट रेफरेंस टाइप