← Back to JavaScript Course | Chapter 4: Modern JS, Async & DOM | Lesson 11 of 26

JS टाइप कन्वर्ज़न

किसी airport kiosk पर currency exchange करने के बारे में सोचें, numbers का रूप बदलता है, dollars से euros में, पर underlying value अभी भी वही चीज़ represent करने के लिए है, बस अलग तरीके से बताई गई। JavaScript में type conversion values के लिए वही currency exchange है, किसी number को text में बदलना, text को number में, या किसी भी value को true या false में, चाहे आपने इसे explicitly मांगा हो, या JavaScript ने चुपचाप खुद कर दिया हो। यह समझना कि यह conversion कब और कैसे होता है, JavaScript के कभी-कभी हैरान करने वाले व्यवहार का बड़ा हिस्सा समझाता है, और cookiescursor.com जैसी sites पर असली form input संभालने के लिए ज़रूरी है।
Syntax
javascript
String(value);
Number(value);
Boolean(value);
parseInt(string);

Implicit बनाम Explicit Conversion

Implicit conversion, जिसे coercion भी कहते हैं, तब अपने आप होता है जब JavaScript को matching types की values चाहिए होती हैं, जैसे + या == में, जबकि explicit conversion तब है जब आप खुद जानबूझकर Number() जैसा कोई function कॉल करके किसी value को बदलते हैं।

Note: जब भी intended type मायने रखे, explicit conversion को prefer करें, यह JavaScript के automatic rules पर निर्भर रहने के बजाय आपके code का व्यवहार साफ बनाता है।
Warning: + के साथ implicit conversion खासतौर पर हैरान कर सकता है, क्योंकि जब भी कोई एक तरफ string हो, यह numbers जोड़ने के बजाय text जोड़ देता है।

उदाहरण: Implicit vs Explicit Conversion

javascript
console.log("5" + 1);   // "51" - implicit coercion
console.log(Number("5") + 1); // 6 - explicit conversion

Number(), String(), और Boolean()

Number() किसी value को उसके numeric equivalent में बदलता है, String() किसी value को text में बदलता है, और Boolean() JavaScript के truthy और falsy rules के आधार पर किसी value को true या false में बदलता है।

Note: किसी non-numeric string पर Number(), जैसे Number(abc), NaN return करता है, untrusted input को convert करने के बाद हमेशा NaN जांचें।
Warning: Boolean(0), Boolean(''), और Boolean(null) सभी false में बदलते हैं, जबकि लगभग बाकी सब कुछ, string के रूप में 0 सहित, true में बदलता है।

उदाहरण: Number(), String(), and Boolean()

javascript
// Print `Number("42")` to the console
// Print `Number("42")` to the console
console.log(Number("42"));
// Print `String(42)` to the console
// Print `String(42)` to the console
console.log(String(42));
// Print `Boolean(0)` to the console
// Print `Boolean(0)` to the console
console.log(Boolean(0));
// Print `Boolean("hello")` to the console
// Print `Boolean("hello")` to the console
console.log(Boolean("hello"));

parseInt और parseFloat

parseInt() किसी स्ट्रिंग को शुरुआत से पढ़ता है और एक whole number निकालता है, पहले non-numeric character पर रुकते हुए, और parseFloat() भी वैसा ही करता है पर result में decimal point की इजाज़त देता है।

Note: parseInt और parseFloat खासतौर पर अतिरिक्त text के साथ आई strings के लिए उपयोगी हैं, जैसे 25px, जिसे सिर्फ Number() ठीक से नहीं संभाल सकता।
Warning: किसी और base जैसी दिखने वाली strings के साथ ambiguity से बचने के लिए parseInt को हमेशा दूसरे argument के रूप में 10 पास करें, जैसे parseInt(value, 10)।

उदाहरण: parseInt and parseFloat

javascript
console.log(parseInt("42px"));   // 42
console.log(parseFloat("3.14m")); // 3.14

आम Coercion Gotchas

JavaScript के कुछ coercion rules व्यापक रूप से हैरान करने वाले माने जाते हैं, जैसे Number('') का 0 return करना, और NaN का === से भी कभी खुद के बराबर न होना, इसीलिए इसे सही तरीके से पहचानने के लिए isNaN() या Number.isNaN() चाहिए।

Note: जब भी किसी ऐसी value की तुलना करें जो NaN हो सकती है, value === NaN के बजाय Number.isNaN(value) इस्तेमाल करें, जो कभी उम्मीद के मुताबिक काम नहीं करता।
Warning: JavaScript में NaN !== NaN true है, यह एक मशहूर अजीब बात है जो उन developers को उलझा देती है जो उम्मीद करते हैं कि बराबर values को हमेशा बराबर ही माना जाएगा।

उदाहरण: Common Coercion Gotchas

javascript
console.log(Number(""));        // 0
console.log(NaN === NaN);       // false
console.log(isNaN(NaN));        // true
console.log(Number.isNaN(NaN)); // true

असली Form Input को Convert करना

HTML form inputs से पढ़ी गई values, type=number fields सहित, JavaScript में हमेशा strings के रूप में आती हैं, जिससे user-submitted data पर कोई भी arithmetic करने से पहले explicit conversion एक ज़रूरी step बन जाता है।

Note: form input को पढ़ते ही हमेशा तुरंत convert और validate करें, इससे पहले कि उसका इस्तेमाल आपकी calculation logic में कहीं और हो।
Warning: किसी form input को किसी number में जोड़ने से पहले convert करना भूल जाना, intended arithmetic result के बजाय string concatenation देता है।

उदाहरण: Converting Real Form Input

javascript
const inputValue = "25"; // value read from a form input, always a string
const age = Number(inputValue);
console.log(age + 5);
Live Example
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. यह भूल जाना कि HTML form inputs से आने वाली values हमेशा strings से शुरू होती हैं, भले ही वे numbers जैसी दिखें, पहले explicit conversion चाहिए।
  2. यह मान लेना कि Number('') NaN return करता है, यह असल में 0 return करता है, एक genuinely surprising conversion rule जो याद रखने लायक है।
  3. edge cases में radix argument के बिना parseInt इस्तेमाल करना, predictable base-10 parsing के लिए हमेशा explicitly 10 pass करें, parseInt(value, 10)।
चैप्टर सारांश
  • Implicit conversion automatically होता है, जैसे + किसी number और string को combine करता है, जबकि explicit conversion Number() जैसे functions से जानबूझकर किया जाता है।
  • Number(), String(), और Boolean() किसी value को उस specific type में explicitly convert करते हैं।
  • parseInt और parseFloat किसी string से एक leading number निकालते हैं, भले ही उसके बाद string में extra non-numeric characters हों।
ब्राउज़र सपोर्ट

Type conversion functions और coercion rules core JavaScript behaviors हैं, standardized और हर browser में identical।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.