JavaScript เป็นภาษา untyped (ไม่มีชนิดข้อมูลคงที่) หมายความว่าตัวแปร JavaScript สามารถเก็บค่าชนิดข้อมูลใดๆ ได้ ไม่ทำงานแบบ C, C++, Java ที่ต้องระบุ datatype เช่น int, char
ในการประกาศตัวแปรใน JavaScript ต้องใช้คีย์เวิร์ด var ไม่ว่าจะเป็นตัวเลขหรือสตริง ใช้ var สำหรับการประกาศ
ตัวอย่าง
Live Demo
<html>
<body>
<script>
<!--
var age = 20;
if(age > 18) {
document.write("<b>Qualifies for driving</b>");
}
//-->
</script>
</body>
</html>
ความเข้าใจที่ถูกต้อง: Dynamically Typed
JavaScript จริงๆ แล้วเป็น Dynamically Typed (มีชนิดข้อมูลแต่ 결정ได้ที่ runtime) ไม่ใช่ Untyped (ไม่มีชนิดข้อมูลเลย เช่น Assembly, Forth)
- Dynamically Typed: ตัวแปรไม่มีชนิด แต่ ค่า (value) มีชนิด — JS, Python, Ruby
- Statically Typed: ตัวแปรมีชนิดคงที่ — C, Java, TypeScript
- Untyped: ไม่มีชนิดข้อมูลเลย — BCPL, Assembly
ใน JS ตัวแปรเดียวกันสามารถเก็บค่าชนิดต่างกันได้ตลอดเวลา:
let x = 42; // number x = "hello"; // string - OK x = true; // boolean - OK x = [1,2,3]; // object - OK