DEV Community

hambalee
hambalee

Posted on

JavaScript ความแตกต่างระหว่าง Primitive Type และ Reference Type

Primitive Type คืออะไร ?

คือเมื่อสร้างตัวแปรใหม่โดยอ้างอิงจากตัวแปรเก่า ค่าที่ได้จะเป็นการคัดลอก

let num1 = 1
let num2 = num1
console.log(num1,num2)//จะได้ผลลัพธ์เป็น 1 ทั้งสองตัวแปร

แต่ถ้าเปลี่ยนเป็น

let num1 = 1
let num2 = num1
num1 = 3
num2 = 4
console.log(num1)//จะได้ผลลัพธ์เป็น 3
console.log(num2)//จะได้ผลลัพธ์เป็น 4

เพราะตัวแปรจะใช้ค่าของแต่ละตัวโดยไม่เกี่ยวข้องกันถึงแม้ num2 จะอ้างอิงมาจาก num1 ก็ตาม

Reference Type คืออะไร ?

คือเป็นการสร้างตัวแปรแบบอ้างอิง โดยที่เมื่อตัวแปรไหนเปลี่ยนตัวแปรอื่นก็จะเปลี่ยนตามด้วย จะใช้กับทั้ง Array และ Object

const person1 = {name: "A"}
const person2 = person1
person2.name = "B"
console.log(person1)//จะได้ผลลัพธ์เป็น B

ทั้ง person1 และ person2 จะใช้ค่าเดียวกัน

ถ้าต้องการคัดลอกเฉพาะค่าใน Object ให้สามารถใช้งานแยกออกจากกันสามารถทำได้โดยใช้ Spread Operator

const person1 = {name: "A"}
const person2 = {...person1}
person2.name = "B"
console.log(person1)//จะได้ผลลัพธ์เป็น A

Discussion (1)

Collapse
nantipatsoften profile image
Nantipat • Edited on

Thank you for sharing