# जावास्क्रिप्ट मूल बातें: डेटा प्रकार

![जावास्क्रिप्ट मूल बातें: डेटा प्रकार](/sketchnotes/webdev101-js-datatypes.png)
> [टोमोमी इमुरा](https://twitter.com/girlie_mac) द्वारा स्केचनेट

## पूर्व व्याख्यान प्रश्नोत्तरी
[पूर्व व्याख्यान प्रश्नोत्तरी](https://ashy-river-0debb7803.1.azurestaticapps.net/quiz/7?loc=hi)

इस पाठ में जावास्क्रिप्ट की मूल बातें शामिल हैं, वह भाषा जो वेब पर अन्तरक्रियाशीलता प्रदान करती है।

[![जावास्क्रिप्ट में डेटा प्रकार](https://img.youtube.com/vi/JNIXfGiDWM8/0.jpg)](https://youtube.com/watch?v=JNIXfGiDWM8 "जावास्क्रिप्ट में डेटा प्रकार")

[![Data Types in JavaScript](https://img.youtube.com/vi/AWfA95eLdq8/0.jpg)](https://youtube.com/watch?v=AWfA95eLdq8 "Data Types in JavaScript")


चलो वेरिएबल्स और डेटा प्रकारों के साथ शुरू करते हैं जो उन्हें आबाद करते हैं!

## वेरिएबल्स

वेरिएबल्स उन मूल्यों को संग्रहीत करते हैं जिन्हें आपके कोड में उपयोग और बदला जा सकता है।

बनाना और **घोषित करना** एक चर में निम्नलिखित सिंटैक्स है **[कीवर्ड] [नाम]**। यह दो भागों से बना है:

- **कीवर्ड**. कीवर्ड `let` या `var` हो सकते हैं।  

   > ध्यान दें, वे कीवर्ड `let` को ES6 में पेश किया गया था और आपके वैरिएबल को तथाकथित _block scope_ देता है। यह अनुशंसा की जाती है कि आप `let` over` var` का उपयोग करें। हम भविष्य के भागों में ब्लॉक स्कोप को अधिक गहराई से कवर करेंगे।
- **वेरिएबल्स नाम**, यह एक ऐसा नाम है जिसे आप स्वयं चुनते हैं।

### कार्य - वेरिएबल्स के साथ काम करना

1. **एक वेरिएबल की घोषणा**। चलो `let` कीवर्ड का उपयोग करते हुए एक चर घोषित करते हैं:

    ```javascript
    let myVariable;
    ```

   `myVariable` अब `let` कीवर्ड का उपयोग करके घोषित किया गया है। वर्तमान में इसका कोई मूल्य नहीं है।

1. **एक मान असाइन करें**। वैरिएबल में `=` ऑपरेटर के साथ एक वैल्यू स्टोर करें, उसके बाद अपेक्षित वैल्यू।

    ```javascript
    myVariable = 123;
    ```

   > नोट: इस पाठ में `=` का उपयोग करने का अर्थ है कि हम एक "असाइनमेंट ऑपरेटर" का उपयोग करते हैं, जिसका उपयोग वैरिएबल पर मान सेट करने के लिए किया जाता है। यह समानता को निरूपित नहीं करता है।

   `myVariable` अब मूल्य 123 के साथ * प्रारंभ * कर दिया गया है।

1. **रिफैक्टर**। निम्नलिखित कथन के साथ अपना कोड बदलें।

    ```javascript
    let myVariable = 123;
    ```

    उपरोक्त को _explicit initialization_ कहा जाता है जब एक चर घोषित किया जाता है और एक ही समय में एक मान निर्दिष्ट किया जाता है।

1. **वेरिएबल का मान बदलें**। वेरिएबल के मान को निम्न तरीके से बदलें:

   ```javascript
   myVariable = 321;
   ```

   एक बार एक वेरिएबल्स घोषित होने के बाद, आप अपने कोड के किसी भी बिंदु पर इसके मूल्य को `=` ऑपरेटर और नए मूल्य के साथ बदल सकते हैं।

   ✅ कोशिश करो! आप अपने ब्राउज़र में जावास्क्रिप्ट सही लिख सकते हैं। ब्राउज़र विंडो खोलें और डेवलपर टूल पर नेविगेट करें. कंसोल में, आपको एक संकेत मिलेगा; टाइप करें `myVariable = 123`, फिर वापसी दबाएँ, फिर` myVariable` टाइप करें। क्या होता है? ध्यान दें, आप बाद के पाठों में इन अवधारणाओं के बारे में अधिक जानेंगे।

## कोन्सटांत्स 

एक निरंतरता की घोषणा और आरंभीकरण वैसा ही होता है जैसा कि वैरिएबल के रूप में, कॉन्स्टैल्स के अपवाद के साथ होता है। स्थिरांक आमतौर पर सभी बड़े अक्षरों के साथ घोषित किए जाते हैं।

```javascript
const MY_VARIABLE = 123;
```

कांस्टेंट  दो अपवादों के साथ, वेरिएबल समान हैं:

- **मान होना चाहिए**। कांस्टेंट को प्रारंभ किया जाना चाहिए, या कोड चलाते समय कोई त्रुटि होगी।
- **संदर्भ नहीं बदला जा सकता है**. एक कांस्टेंट के संदर्भ को एक बार प्रारंभ करने के बाद नहीं बदला जा सकता है, या कोड चलाते समय एक त्रुटि उत्पन्न होगी। आइए दो उदाहरण देखें:
   - **साधारण मूल्य**. निम्नलिखित की अनुमति नहीं है:
   
      ```javascript
      const PI = 3;
      PI = 4; // not allowed
      ```
 
   - **ऑब्जेक्ट संदर्भ संरक्षित है**.निम्नलिखित की अनुमति नहीं है।
   
      ```javascript
      const obj = { a: 3 };
      obj = { b: 5 } // not allowed
      ```

    - **ऑब्जेक्ट संदर्भ संरक्षित नहीं है**. निम्नलिखित की अनुमति है:
    
      ```javascript
      const obj = { a: 3 };
      obj.a = 5;  // allowed
      ```

      ऊपर आप ऑब्जेक्ट के मूल्य को बदल रहे हैं, लेकिन स्वयं संदर्भ को नहीं, जो इसे अनुमति देता है।

   > ध्यान दें, एक `const` का अर्थ है कि संदर्भ को पुन: असाइनमेंट से सुरक्षित किया गया है। मान __अडिग__ नहीं है, हालांकि और बदल सकता है, खासकर अगर यह एक ऑब्जेक्ट की तरह एक जटिल निर्माण है।

## डाटा प्रकार

वेरिएबल्स कई अलग-अलग प्रकार के मानों को संग्रहीत कर सकती हैं, जैसे संख्याएं और पाठ। इन विभिन्न प्रकार के मूल्यों को **डेटा प्रकार** के रूप में जाना जाता है। डेटा प्रकार सॉफ्टवेयर विकास का एक महत्वपूर्ण हिस्सा है क्योंकि यह डेवलपर्स को निर्णय लेने में मदद करता है कि कोड को कैसे लिखा जाना चाहिए और सॉफ्टवेयर को कैसे चलाना चाहिए। इसके अलावा, कुछ डेटा प्रकारों में विशिष्ट विशेषताएं होती हैं जो मूल्य में अतिरिक्त जानकारी को बदलने या निकालने में मदद करती हैं।

✅ डेटा प्रकारों को जावास्क्रिप्ट डेटा प्राइमेटिव के रूप में भी जाना जाता है, क्योंकि वे भाषा द्वारा प्रदान किए जाने वाले निम्नतम-स्तरीय डेटा प्रकार हैं। 6 आदिम डेटा प्रकार हैं: स्ट्रिंग, संख्या, बिगिन्ट, बूलियन, अपरिभाषित और प्रतीक। यह देखने के लिए एक मिनट लें कि इनमें से प्रत्येक आदिम क्या प्रतिनिधित्व कर सकता है। एक `ज़ेबरा` क्या है? `0` ? `true`?

### नंबर्स 

पिछले खंड में, `myVariable` का मान एक संख्या डेटा प्रकार था।

`let myVariable = 123;`

चर सभी प्रकार की संख्याओं को संग्रहीत कर सकते हैं, जिसमें दशमलव या नकारात्मक संख्याएं शामिल हैं। संख्याओं का उपयोग अंकगणितीय संचालकों के साथ भी किया जा सकता है, जिन्हें [अगले भाग](#अंकगणितीय-आपरेटर) में शामिल किया गया है।

### अंकगणितीय आपरेटर

अंकगणितीय कार्यों को करते समय कई प्रकार के ऑपरेटरों का उपयोग करना होता है, और कुछ यहां सूचीबद्ध हैं:

| प्रतीक | विवरण                                      | उदाहरण                          |
| ---- | ----------------------------------------- | ------------------------------ |
| `+`  | **जोड़**: दो संख्याओं के योग की गणना करता है           | `1 + 2 //अपेक्षित उत्तर 3 है`       |
| `-`  | **Subtraction**: दो संख्याओं के अंतर की गणना करता है | `1 - 2 //अपेक्षित उत्तर -1 है`      |
| `*`  | **गुणा**: दो नंबरों के उत्पाद की गणना करता है          | `1 * 2 //अपेक्षित उत्तर 2 है`       |
| `/`  | **विभाजन**: दो संख्याओं के भागफल की गणना करता है       | `1 / 2 //अपेक्षित उत्तर 0. है`      |
| `%`  | **शेष**: दो संख्याओं के विभाजन से शेष की गणना करता है    | `1 % 2 //expected answer is 1` |

✅ कोशिश करो! अपने ब्राउज़र के कंसोल में एक अंकगणितीय ऑपरेशन आज़माएँ। क्या परिणाम आपको आश्चर्यचकित करते हैं?

### स्ट्रिंग्स

स्ट्रिंग्स ऐसे पात्रों के समूह हैं जो एकल या दोहरे उद्धरणों के बीच रहते हैं।

- `'This is a string'`
- `"This is also a string"`
- `let myString = 'This is a string value stored in a variable';`

एक स्ट्रिंग लिखते समय उद्धरणों का उपयोग करना याद रखें, अन्यथा जावास्क्रिप्ट यह मान लेगा कि यह एक वेरीअबल नाम है।

### स्वरूपण स्ट्रिंग्स

स्ट्रिंग्स पाठात्मक हैं, और समय-समय पर प्रारूपण की आवश्यकता होगी।

दो या अधिक स्ट्रिंग्स को मिलाएं या उन्हें **एक साथ जोड़ने** के लिए, '+' ऑपरेटर का उपयोग करें।

```javascript
let myString1 = "Hello";
let myString2 = "World";

myString1 + myString2 + "!"; //HelloWorld!
myString1 + " " + myString2 + "!"; //Hello World!
myString1 + ", " + myString2 + "!"; //Hello, World!

```

✅ जावास्क्रिप्ट में `1 + 1 = 2` क्यों करता है, लेकिन `'1' + '1' = 11?` इसके बारे में सोचो। `'1' + 1` के बारे में क्या?

**टेम्पलेट लिटेरल्स** स्ट्रिंग्स को फॉर्मेट करने का एक और तरीका है, उद्धरणों के बजाय, बैकटिक का उपयोग किया जाता है। जो कुछ भी सादा पाठ नहीं है, उसे प्लेसहोल्डर्स `$ {}` के अंदर रखा जाना चाहिए। इसमें कोई भी चर शामिल है जो तार हो सकते हैं।

```javascript
let myString1 = "Hello";
let myString2 = "World";

`${myString1} ${myString2}!` //Hello World!
`${myString1}, ${myString2}!` //Hello, World!
```

आप या तो विधि के साथ अपने स्वरूपण लक्ष्यों को प्राप्त कर सकते हैं, लेकिन टेम्पलेट शाब्दिक किसी भी स्थान और लाइन ब्रेक का सम्मान करेंगे।

✅ आप टेम्प्लेट शाब्दिक लिटेरल्स सादे स्ट्रिंग का उपयोग कब करेंगे?

### बूलियन्स 

बूलियन केवल दो मूल्य हो सकते हैं: `true` या `false`। बूलियंस निर्णय लेने में मदद कर सकते हैं कि किन शर्तों को पूरा करने पर कोड की लाइनें चलनी चाहिए। कई मामलों में, [ऑपरेटर](#अंकगणितीय-आपरेटर) एक बूलियन का मूल्य निर्धारित करने में सहायता करते हैं और आप अक्सर वैरिएबल या उनके मूल्यों को एक ऑपरेटर के साथ अपडेट किए जाने पर ध्यान देंगे और लिखेंगे।

- `let myTrueBool = true`
- `let myFalseBool = false`

✅ एक चर को 'सत्य' माना जा सकता है यदि यह एक बूलियन `true` का मूल्यांकन करता है। दिलचस्प रूप से, जावास्क्रिप्ट में, [सभी मूल्य सत्य हैं जब तक कि मिथ्या के रूप में परिभाषित नहीं किया जाता](https://developer.mozilla.org/docs/Glossary/Truthy) 

---

## 🚀 चुनौती

जावास्क्रिप्ट मौके पर डेटाटिप्स को संभालने के अपने आश्चर्यजनक तरीकों के लिए कुख्यात है।इन 'gotchas' पर थोड़ा शोध करें। For example: case sensitivity can bite! इसे अपने कंसोल में आज़माएँ: `let age = 1; let Age = 2; age == Age` (`false` हल करता है - क्यों?). आपको अन्य क्या मिल सकते हैं?

## व्याख्यान उपरांत प्रश्नोत्तरी
[व्याख्यान उपरांत प्रश्नोत्तरी](https://ashy-river-0debb7803.1.azurestaticapps.net/quiz/8?loc=hi)

## समीक्षा और स्व अध्ययन

[जावास्क्रिप्ट अभ्यासों की यह सूची](https://css-tricks.com/snippets/javascript/) पर एक नज़र डालें और एक कोशिश करें। आपने क्या सीखा?

## असाइनमेंट

[डेटा प्रकार अभ्यास](assignment.hi.md)
