# What is Datatypes in JavaScript ?

---

What is a datatype, and why is it called a datatype? Don’t worry—I’ll explain it clearly with a real-life example so you can understand. Imagine you’ve gone to a digital store to buy a laptop for gaming and programming. The staff present several options: an old Acer laptop, an Asus ROG, a MacBook Air, and an Asus VivoBook.

The staff explain that the Acer laptop is suitable for learning and study purposes. They describe the Asus ROG as ideal for learning, programming, hardcore gaming, and running powerful software. The MacBook Air is recommended for editing and programming, with a focus on speed. Finally, they present the VivoBook as best for office-related and casual tasks.

**In this analogy, each laptop represents a different datatype, tailored for specific uses. Similarly, in programming, a datatype defines the kind of data a variable can hold and how it can be used.**

So when it comes to JavaScript we have two types of datatypes , They are as follows :

Primitive & Non Primitive Datatypes

Non primitive datatypes are also called as reference datatypes which i will describe it later.

The primitive datatypes are

**Number = 20**

**Null = empty value**

**Boolean = true/false , but not both**

**bigInt = 102736363636n bigger mathematical values**

**String = "Aadarsh"**

**Symbol =unique values**

**undefined = the value is not defined or not initialized yet**

Why it is called as primitive datatypes ? Ever wondered ? Because when ever we do anything with these operator like when we assign the same value to a different variable like

`const url = "shutthefvckup.com";`

`const linkUrl = url;`

So here the variable `url` is declared first and we assigned the corresponding value and secondly we created an another variable called `linkUrl` and assigned the same value, here the value is not directly gone to the second variable the js just send a copy of the variable to the `linkUrl` variable. So whatever we do with the `linkUrl` variable the changes will not affect the main url variable, Because the `linkUrl` variable contains a copy of url variables value which is "`shutthefvckup.com`"

Non Primitive Datatypes are as follows :

Objects = `{ position : "Senior Soap Developer" , age : 20}` Collections of key-value pairs.

Functions = `function sayMyName( ){`

`const name = "Walter White";`

`return My name is ${name}`

`}` Blocks of code that can be invoked.

Arrays = `[1,2,3,4,5,6,7,8,9,10];` Ordered lists of values.

So why it is called as a reference datatypes ? Don't worry i can simplify.

lets store some data inside a variable called as `user`.

`const user = { username: "john_doe", password: "securePassword123", age: 30 };`

and lets make an another variable called as `user2` and assign the value same as the `user` variable.

`const user2 = user;`

So now we think , the value passed here is same as the primitive datatype values, But its actually no the case.

The value passed to the `user2` is not a copy of user variable it is shares the same reference which is `user` variable. That means whenever we made any changes to the user2 variable the original value gets manipulated.

lets see.

`const user = { username: "john_doe", password: "securePassword123", age: 30 };`

`const user2 = user; user2.username = "tyler duren";`

`console.log(user) => // this will be the output { username: 'tyler duren', password: 'securePassword123', age: 30 }`

`console.log(user2) // this will be the output { username: 'tyler duren', password: 'securePassword123', age: 30 }`

See the original value gets manipulated. That's it ,I hope was helpful.

Thanks
