การคำนวณด้วย ตัวดำเนินการในคณิตศาสตร์ ใน ภาษา Javascript (part 1)

การคำนวณนั้นเป็น พื้นฐานสำคัญของภาษาโปรแกรมมิ่ง ซึ่ง ตัวดำเนินการทางคณิตศาสตร์ก็เป็นพื้นฐานการคำนวณของ โปรแกรม แล้วทำไมเราต้องมาศึกษาของ ภาษา javascript ในเมื่อเราก็เรียน วิธีการทางคณิตศาสตร์ และ เครื่องหมายทางคณิตศาสตร์มาตั้งแต่ ประถมแล้ว แน่นอนว่า ภาษา Javascript นั้นมี ข้อมูลที่เป็น dynamic type คือข้อมูลในภาษา javascript นั้นสามารถเปลี่ยนแปลงชนิดของข้อมูลได้ ก่อนที่จะมาดูการดำเนินการทางคณิตศาสตร์มาดู primitive type แบบคราวๆกันก่อน

ข้อมูลพื้นฐานของภาษา javascript นั้นมีทั้งหมด 5 ประเภทด้วยกัน

1. ตัวเลข (number)

2. ตัวหนังสือ (string)

3. ค่าความจริง (boolean)

4. ค่าว่าง (null)

5. ยังไม่ได้กำหนดค่า (undefined)

ต่อมามาดูกันว่าตัวดำเนินการทางคณิตศาสตร์มีอะไรบ้าง

1. + addition

2. — subtraction

3. * multiplication

4. / Division

5. % modulo

6. (++) increment

7. ( — ) decrement

8. (**) Exponentiation

คราวนี้เรามาดูกันว่าข้อมูลแต่ละประเภทเมื่อใช้ตัวดำเนินการทางคณิตศาสตร์เป็นยังไงกันบ้าง แล้วจุดสังเกตคืออะไร แต่ก่อนอื่นมาดูโค๊ดตัวอย่างกันก่อนนะครับ

Image for post
รูปภาพที่ 1 เป็นตัวอย่างการคำนวณผ่านตัวดำเนินการทารคณิตศาสตร์เมื่อเป็นข้อมูลประเภทเดียวกัน
Image for post
รูปภาพที่ 2 เป็นตัวอย่างการคำนวณผ่านตัวดำเนินการทารคณิตศาสตร์เมื่อเป็นข้อมูลตัวเลขกับข้อมูลประเภทอื่นๆ
Image for post
รูปภาพที่ 3 เป็นตัวอย่างการคำนวณผ่านตัวดำเนินการทารคณิตศาสตร์เมื่อเป็นข้อมูลค่าความจริงกับข้อมูลประเภทอื่นๆ
Image for post
รูปภาพที่ 4 เป็นตัวอย่างการคำนวณผ่านตัวดำเนินการทารคณิตศาสตร์เมื่อเป็นข้อมูลค่าว่างกับข้อมูลประเภทอื่นๆ
Image for post
รูปภาพที่ 5 เป็นตัวอย่างการคำนวณผ่านตัวดำเนินการทารคณิตศาสตร์เมื่อเป็นข้อมูลที่่ยังไม่ได้กำหนดค่ากับข้อมูลประเภทอื่นๆ

จากตัวอย่างรูปภาพด้านบนจะเห็นได้ว่าเมื่อนำข้อมูลประเภทต่างๆมาคำนวณผ่านตัวดำเนินการทางคณิตศาสตร์แล้วนั้นประเภทของข้อมูลส่วนใหญ่มีการเปลี่ยนแปลงไป

เราลองมาวิเคราะห์กันดูนะครับว่า จุดสังเกตที่เราพบมีอะไรกันบ้าง

  1. ตัวดำเนินการทางคณิตศาสตร์ที่เป็นเครื่องหมาย + เมื่อมีการใช้ร่วมกับข้อมูลประเภท ตัวหนังสือ (String) เมื่อรวมกับข้อมูลประเภทอื่นๆ จะทำให้ ผลลัพธ์ กลายเป็นข้อมูล ตัวหนังสือ ตัวหน้า + มาต่อด้วยตัวหลัง +
  2. ตัวดำเนินการทางคณิตศาสตร์ที่เป็นเครื่องหมาย -,* , / จะทำให้ข้อมูลทั้งหมดกลายเป็นประเภท ตัวเลข (Number) และ ผลลัพธ์สุดท้ายออกมาเป็น ตัวเลข
  3. สิ่งที่ต้องรู้คือ ข้อมูลประเภทอื่นๆเมื่อเปลี่ยนเป็นตัวเลขแล้วจะได้ค่าอะไร
Image for post
รูปภาพที่ 6 การเปลี่ยนข้อมูลประเภทอื่นๆ เป็น ตัวเลข

โดยการเปลี่ยนข้อมูลนั้นตัวภาษา Javascript จะทำการเปลี่ยนข้อมูลโดยใช้ Number method ในการเปลี่ยนค่า จากรูปที่ 6 เราสามารถเช็คค่าได้ว่าข้อมูลประเภทไหนเปลี่ยนเป็นค่าอะไร

4. ค่าอะไรก็ตามเมื่อมากระทำกับ NaN จะได้ค่าเป็น NaN เสมอ

ข้อควรระวัง!!!!

  1. หลายคนมักเข้าใจผิดว่า ถ้าเอา String มา * ตัวเลข จะได้ String ที่ซ้ำกันเท่ากันจำนวนตัวเลข

ตัวอย่างเช่น

“Hello” * 3 = “HelloHelloHello” ผิด

ซึ่งเป็นการเข้าใจที่ผิดเพราะว่า บางคนอาจเคยเอา String มาบวกกันแล้ว String มาต่อกันเลยคิดว่า * จะทำได้ จริงๆแล้วไม่ได้ และผลลัพธ์ที่ได้ออกมาดันเป็นข้อมูลตัวเลขอีก

“Hello” * 3 = NaN ถูกต้อง

2. String ตัวเลข + ตัวเลข ได้เป็นตัวเลข

ตัวอย่างเช่น

“1” + 1 = 2 ผิด

ซึ่งเป็นการเข้าใจที่ผิดเพราะว่า บางคนอาจเคยจะลืม “1” เป็นข้อมูล ประเภท String ดังนั้นผลลัพธ์สุดท้ายยังไงต้องได้ String แต่พอลืมว่าคิดว่า “1” เป็นตัวเลข ทำให้ผลการเอาข้อมูลไปใช้ต่อมีความผิดพลาดได้

“1” + 1 = “11” ถูก

สุดท้ายผมมี เทคนิค เจ๋งๆมาฝากกันนะครับไหนๆ เราก็พูดถึงพวกตัวเลขกันแล้ว

เทคนิคที่ว่าก็คือ การเปลี่ยนข้อมูลประเภทอื่นๆเป็นข้อมูลตัวเลขอย่างง่ายๆ หลายคนอาจจะสงสัยว่ามันก็ไม่ได้ยากนิ ก็ใช้ Number method ที่กล่าวไปสิ แต่จริงๆแล้วมันมีวิธีที่ง่ายกว่านั้นครับ ก็คือการใช้พิมพ์เครื่องหมาย + ไปที่หน้าข้อมูลที่เราต้องการเปลี่ยนค่าครับแล้วตัว Javascript จะเปลี่ยนข้อมูลนั้นเหมือนกับการใช้ Number() เลย

Image for post

บทความหน้าเรามาดูกันต่อว่า ตัวดำเนินการข้อที่ 5–8 ใช้ยังไงและมีจุดสังเกตอะไรบ้าง

ขอขอบคุณข้อมูลจาก:
https://medium.com/@ambitious_puce_spider_908/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%84%E0%B8%B3%E0%B8%99%E0%B8%A7%E0%B8%93%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-%E0%B8%95%E0%B8%B1%E0%B8%A7%E0%B8%94%E0%B8%B3%E0%B9%80%E0%B8%99%E0%B8%B4%E0%B8%99%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%99%E0%B8%84%E0%B8%93%E0%B8%B4%E0%B8%95%E0%B8%A8%E0%B8%B2%E0%B8%AA%E0%B8%95%E0%B8%A3%E0%B9%8C-%E0%B9%83%E0%B8%99-%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2-javascript-part-1-8745f53c8efd

Write a comment