ููŠ ุงู„ู€ JavaScriptุŒ ุนู†ุฏู†ุง ุชู‚ุณูŠู…ุชูŠู† ุฃุณุงุณูŠุชูŠู† ู„ู„ู€ Data Types:

  1. ุงู„ู€ Primitive Type: ูˆู‡ูŠ ุงู„ุฃู†ูˆุงุน ุงู„ุฃุณุงุณูŠุฉ ูˆุงู„ุจุณูŠุทุฉ.
  2. ุงู„ู€ Non-primitive Type: ุฒูŠ ุงู„ู€ Objects ูˆุงู„ู€ Arrays.

ุฎู„ูŠู†ุง ู†ุฑูƒุฒ ุงู„ู†ู‡ุงุฑุฏุฉ ุนู„ู‰ ุงู„ู€ Primitive Types ุงู„ู„ูŠ ุจู†ุชุนุงู…ู„ ู…ุนุงู‡ุง ูŠูˆู…ูŠุงู‹.

1. String

ุงู„ู€ String ู‡ูˆ ุฃูŠ ู†ุต ุฃูˆ ู…ุฌู…ูˆุนุฉ ุญุฑูˆู. ููŠ ุงู„ู€ JavaScriptุŒ ุจู†ุนุฑู ุงู„ู€ String ู„ู…ุง ู†ุญุท ุงู„ู‚ูŠู…ุฉ ุจูŠู† Single Quotes ' ' ุฃูˆ Double Quotes " ".

var username = 'CornPop'; // This is a string
var testNumber = '123'; // Even numbers inside quotes are strings

Difference between Variable and String Literal

ู„ุงุฒู… ุชูุฑู‚ ุจูŠู† ุฅู†ูƒ ุชุทุจุน ุงู„ู€ Variable ู†ูุณู‡ ูˆุจูŠู† ุฅู†ูƒ ุชุทุจุน ูƒู„ู…ุฉ ุซุงุจุชุฉ:

  • ู„ูˆ ูƒุชุจุช console.log('username')ุ› ุงู„ู€ JavaScript ู‡ูŠุทุจุน ูƒู„ู…ุฉ โ€œusernameโ€ ุฒูŠ ู…ุง ู‡ูŠ.
  • ู„ูˆ ูƒุชุจุช console.log(username)ุ› ุงู„ู€ JavaScript ู‡ูŠุทุจุน ุงู„ู‚ูŠู…ุฉ ุงู„ู„ูŠ ุฌูˆุง ุงู„ู€ Variable (ุงู„ู„ูŠ ู‡ูŠ โ€œCornPopโ€).

2. The typeof Operator

ุนุดุงู† ู†ุนุฑู ู†ูˆุน ุฃูŠ Variable ููŠ ุงู„ู€ JavaScriptุŒ ุจู†ุณุชุฎุฏู… ุงู„ู€ Operator ุงู„ู„ูŠ ุงุณู…ู‡ typeof.

var username = 'CornPop';
console.log(typeof username); // Output: string

3. Number

ุนู„ู‰ ุนูƒุณ ู„ุบุงุช ุจุฑู…ุฌุฉ ุชุงู†ูŠุฉ ูƒุชูŠุฑุŒ ุงู„ู€ JavaScript ู…ููŠุด ููŠู‡ุง ุชูุฑู‚ุฉ ุจูŠู† ุงู„ู€ Integer (ุงู„ุฑู‚ู… ุงู„ุตุญูŠุญ) ูˆุงู„ู€ Float ุฃูˆ Double (ุงู„ุฃุฑู‚ุงู… ุงู„ุนุดุฑูŠุฉ). ูƒู„ู‡ ููŠ ุงู„ุขุฎุฑ ุจูŠุนุชุจุฑ ู†ูˆุน ูˆุงุญุฏ ูˆู‡ูˆ ุงู„ู€ Number.

var userAge = 28;      // Number
var price = 28.5;     // Also a Number
console.log(typeof userAge); // Output: number

ู…ู„ุญูˆุธุฉ: ููŠ ู†ูˆุน ุธู‡ุฑ ููŠ 2015 ุงุณู…ู‡ ุงู„ู€ BigInt ู„ู„ุฃุฑู‚ุงู… ุงู„ุถุฎู…ุฉ ุฌุฏุงู‹ุŒ ุจุณ ุงู„ุฃุณุงุณ ุนู†ุฏู†ุง ู‡ูˆ ุงู„ู€ Number.


4. Boolean

ุงู„ู€ Boolean ู‡ูˆ ู†ูˆุน ุจุณูŠุท ุฌุฏุงู‹ุŒ ู…ู„ูˆุด ุบูŠุฑ ู‚ูŠู…ุชูŠู† ุจุณ: ูŠุง ุฅู…ุง true (ุตุญ) ุฃูˆ false (ุบู„ุท). ุจู†ุณุชุฎุฏู…ู‡ ูƒุชูŠุฑ ููŠ ุงู„ู€ Logical conditions.

var isConnected = false;
console.log(typeof isConnected); // Output: boolean

5. Undefined

ุงู„ู€ Undefined ุจูŠุธู‡ุฑ ู„ู…ุง ู†ุนุฑู Variable ุจุณ ู…ู†ุฏู‡ูˆุด ุฃูŠ ู‚ูŠู…ุฉ. ุงู„ู€ JavaScript ู‡ู†ุง ู…ุด ุจุชู„ุงู‚ูŠ โ€œValueโ€ ุชุญุฏุฏ ู…ู†ู‡ุง ุงู„ู†ูˆุนุŒ ูุจุชุนุชุจุฑ ุงู„ู†ูˆุน ูˆุงู„ู‚ูŠู…ุฉ ุงู„ุงุชู†ูŠู† undefined.

var x; 
console.log(x);        // Output: undefined
console.log(typeof x); // Output: undefined

6. Null

ุงู„ู€ Null ุจูŠุนุจุฑ ุนู† โ€œุงู„ุนุฏู…โ€ ุฃูˆ ุฅู† ุงู„ู‚ูŠู…ุฉ ู…ุด ู…ูˆุฌูˆุฏุฉ ุญุงู„ูŠุงู‹. ู…ุซุงู„ ุชูˆุถูŠุญูŠ: ู„ูˆ ุจู†ุนู…ู„ ุณูŠุณุชู… ู„ู…ูˆุธููŠู†ุŒ ูˆุนู†ุฏู†ุง ุฎุงู†ุฉ โ€œุงู„ู…ูˆู‚ู ู…ู† ุงู„ุชุฌู†ูŠุฏโ€. ุจุงู„ู†ุณุจุฉ ู„ู„ู…ูˆุธูุงุช (ุงู„ุจู†ุงุช)ุŒ ุงู„ุฎุงู†ุฉ ุฏูŠ ู…ู„ู‡ุงุด ู‚ูŠู…ุฉ ุฃุตู„ุงู‹ุŒ ูุจู†ุญุทู‡ุง null.

var militaryStatus = null;

The Null Bug in JavaScript

ู‡ู†ุง ููŠู‡ ู…ูุงุฌุฃุฉ ุบุฑูŠุจุฉ! ู„ูˆ ุฌูŠุช ุชุนู…ู„ typeof null ููŠ ุงู„ู€ JavaScriptุŒ ู‡ูŠุทู„ุน ู„ูƒ ุงู„ู†ุชูŠุฌุฉ object. ุฏู‡ ุจูŠุนุชุจุฑ Bug ุฃูˆ ุบู„ุทุฉ ู‚ุฏูŠู…ุฉ ููŠ ุชุตู…ูŠู… ุงู„ู„ุบุฉ ู…ู† ุจุฏุงูŠุชู‡ุงุŒ ูˆู…ุตู„ุญูˆู‡ุงุด ู„ุญุฏ ุฏู„ูˆู‚ุชูŠ ุนุดุงู† ู…ูŠุญุตู„ุด ูƒุณุฑ ู„ู„ู€ Websites ุงู„ู‚ุฏูŠู…ุฉ ุงู„ู„ูŠ ู…ุนุชู…ุฏุฉ ุนู„ู‰ ุงู„ุบู„ุทุฉ ุฏูŠ. ู„ูƒู† ุชู‚ู†ูŠุงู‹ุŒ ุงู„ู€ Null ุจูŠุนุชุจุฑ Primitive Type.


Summary

graph TD
    A[JavaScript Data Types] --> B[Primitive Types]
    A --> C[Non-Primitive Types]
    B --> D[String]
    B --> E[Number]
    B --> F[Boolean]
    B --> G[Undefined]
    B --> H[Null]
    B --> I[BigInt - ES6]
    B --> J[Symbol - ES6]
    C --> K[Objects]
    C --> L[Arrays]

Learning Resources

ู„ูˆ ุญุงุจุจ ุชุชุนู…ู‚ ุฃูƒุชุฑุŒ ุฏูŠ ุฃูุถู„ ุงู„ู…ุตุงุฏุฑ:

  1. ุงู„ู€ MDN (Mozilla Developer Network): ุฏู‡ ุงู„ู…ุฑุฌุน ุงู„ุฑุณู…ูŠ ูˆุงู„ุฃุณุงุณูŠ ู„ู„ุบุฉ.
  2. ุงู„ู€ JavaScript.info: ู…ูˆู‚ุน ู…ู…ุชุงุฒ ุจูŠุดุฑุญ ุจุฃุณู„ูˆุจ ุชุนู„ูŠู…ูŠ ู…ุชุฏุฑุฌ (ูˆููŠู‡ ู†ุณุฎุฉ ุนุฑุจูŠ).
  3. ุงู„ู€ W3Schools: ุจุณูŠุท ูˆุณู‡ู„ ู„ู„ุชุทุจูŠู‚ ุงู„ุณุฑูŠุน.

Notes

  • ุงู„ู€ null ุชู‚ู†ูŠุงู‹ ุจูŠุนุชุจุฑ Primitive TypeุŒ ู„ูƒู† ุงู„ู€ typeof null ุจูŠุฑุฌุน object ุจุณุจุจ ุฎุทุฃ ุชุงุฑูŠุฎูŠ ููŠ ุงู„ู€ JavaScript Engine. ู„ุงุฒู… ุชูƒูˆู† ูˆุงุนูŠ ู„ู„ูุฑู‚ ุฏู‡ ููŠ ุงู„ู€ Interviews.
  • ุงู„ูุฑู‚ ุงู„ุฌูˆู‡ุฑูŠ ุจูŠู† ุงู„ู€ null ูˆุงู„ู€ undefined ู‡ูˆ ุฅู† ุงู„ู€ undefined ู…ุนู†ุงู‡ ุฅู† ุงู„ู…ุชุบูŠุฑ โ€œู„ู… ูŠุชู… ุชุนูŠูŠู† ู‚ูŠู…ุฉ ู„ู‡ ุจุนุฏโ€ุŒ ุฃู…ุง ุงู„ู€ null ูู…ุนู†ุงู‡ ุฅู† ุงู„ู…ุจุฑู…ุฌ ู‚ุฑุฑ โ€œู‚ุตุฏุงู‹โ€ ุฅู† ุงู„ู…ุชุบูŠุฑ ุฏู‡ ูŠูƒูˆู† โ€œูุงุถูŠโ€ ุฃูˆ โ€œุจุฏูˆู† ู‚ูŠู…ุฉโ€.
  • ุงู„ู€ Immutability: ูƒู„ ุงู„ู€ Primitive types ููŠ ุงู„ู€ JavaScript ู‡ูŠ ImmutableุŒ ุจู…ุนู†ู‰ ุฅู†ูƒ ู…ุด ุจุชู‚ุฏุฑ ุชุบูŠุฑ ุงู„ู‚ูŠู…ุฉ ู†ูุณู‡ุง ููŠ ุงู„ุฐุงูƒุฑุฉุŒ ู„ูƒู† ุจุชู‚ุฏุฑ ุชุนูŠุฏ ุชุนูŠูŠู† (Re-assign) ุงู„ู€ Variable ู„ู‚ูŠู…ุฉ ุฌุฏูŠุฏุฉ ุจุงู„ูƒุงู…ู„.
  • ุงู„ู€ Symbol: ุฏู‡ ู†ูˆุน Primitive ุชุงู†ู ุจูŠุณุชุฎุฏู… ู„ุนู…ู„ Unique identifiers ู„ู„ู€ Object propertiesุŒ ูˆุฏู‡ ู…ููŠุฏ ููŠ ุงู„ุญุงู„ุงุช ุงู„ู…ุชู‚ุฏู…ุฉ ุฌุฏุงู‹.

  • ููŠ ุงู„ู€ .NET (ุฒูŠ C#)ุŒ ุนู†ุฏู†ุง ุชู‚ุณูŠู… ู…ุดุงุจู‡ (Value Types vs Reference Types). ุงู„ู€ Primitive types ููŠ JS ุจุชุดุจู‡ ุงู„ู€ Value Types ููŠ ุงู„ู€ .NET.
  • ุงู„ู€ JavaScript Number ุจูŠุดุจู‡ ุงู„ู€ double ููŠ C# ู„ุฃู† ุงู„ุงุชู†ูŠู† ุจูŠุณุชุฎุฏู…ูˆุง ุงู„ู€ IEEE 754 standard.