JavaScript Primitive vs. Reference Values

สวัสดีท่านผู้อ่านทุกท่านครับ เมื่อวันก่อนผมได้อ่านบทความเรื่อง JavaScript Primitive vs. Reference Values(http://www.javascripttutorial.net/javascript-primitive-vs-reference-values/) ก็เลยนำมาเรื่องนี้มาเล่าสู่เพื่อนๆนักอ่านกันสักหน่อยครับ
Primitive คืออะไร ?
Primitive ก็คือ ประเภทของของข้อมูลที่ภาษา JavaScript กำหนดมาให้เราแล้วทั้งหมด 6 ประเภทคือ
- undefined
- null
- boolean
- number
- string
- symbol
จะรู้ได้อย่างไรว่าเราใช้ primitive type อะไรอยู่ ?
เราก็ใช้ความสามารถของ typeof ซึ่งก็จะได้ code ดังด้านล่าง
let name = ‘Geidtiphong Singseewo’
console.log(typeof name)
Result: string
ใน JavaScript นั้นตัวภาษามันฉลาดมากพอ เราจึงไม่ต้องกำหนด Primitive type ก่อนที่จะเก็บค่าตัวแปรต่างๆนั้นเอง
Copying primitive values
กรณีเราจะกำหนดค่า 2 ค่าแบบเดียวกันปกติเราอาจจะเขียนแบบนี้
let a = 10
let b = 10
ซึ่งผลลัพพธ์ก็จะได้ a = 10 และ b = 10 ซึ่งก็ไม่ผิดแปลกอะไร แต่ผมอยากจะขอเสนออีกวิธีก็คือ copy primitive value ซึ่งกระบวนท่านั้นก็ไม่ได้ยากเย็นอะไรเล๊ยครับผม ซึ่งเขียนได้ดังด้านล่างนี้
let a = 10
let b = a
ซึ่งเราก็จะได้ผลลัพธ์เดียวกันแบบแรก ซึ่งก็ทำชีวิตเราง่ายขึ้น(นิดนึ่ง) คร่าวนี้กรณีเราเปลี่ยนค่า b = 20 เราจะได้ผลลัพธ์ b = 20 แต่ a จะยังเท่ากับ 10 เหมือนเดิมก็เพราะว่าการที่เราเข้าถึงข้อมูลแบบ primitive type นั้น ค่าของ a และ b ไม่มีความเกี่ยวเนื่องกันนั้นเองครับ ตัดจบ~~
Reference Object คืออะไร ?
การอ้างถึงข้อมูลที่อยู่ใน Object นั้นๆ ซึ่งก็คล้ายๆ กับแบบ Primitive type เลยครับแต่มีความต่างกันตรงที่เมื่อค่าใน Object นั้นๆ มีการเปลี่ยนแปลงจะทำให้ผลลัพธ์ของ variable ที่อ้างอิงถึงเปลี่ยนแปลงไปทั้งหมด เอาละพิมพ์เยอะละเรามาดู code กันหน่อยเนาะเพื่อเพิ่มความเข้าใจ
let person = {name: ‘Geidtiphong Singseewo’}
let person2 = person
person2.name = ‘Pobx’
console.log(person)
console.log(person2)
ซึ่งจาก code ด้านบนเราจะได้ผลลัพธ์เหมือนกันก็คือ name: ‘Pobx’
เป็นไงกันบ้างครับกับบทความเรื่องนี้หวังว่าคงจะเป็นประโยชน์กับท่านผู้อ่านทุกท่าน สุขสวัส กันทุกคนทุกท่าน ในวันหยุดนี้ครับ บรั๊ย ~~