在 JavaScript 中有 6 种不同的数据类型:
string、number、boolean、object、function、symbol。
3 种对象类型:
Object、Date、Array
2 个不包含任何值的数据类型:
null、undefined
typeof 操作符
你可以使用 typeof 操作符来查看 JavaScript 变量的数据类型。
typeof "hhhh" // 返回 string
typeof 3.14 // 返回 number
typeof null // 返回 object
typeof 3.14 // 返回 number
typeof [1,2,3,4] // 返回 object
注意:
- NaN 的数据类型是 number
- 数组(Array)的数据类型是 object
- 日期(Date)的数据类型为 object
- null 的数据类型是 object
- 未定义变量的数据类型为 undefined
如果对象是 JavaScript Array 或 JavaScript Date ,我们就无法通过 typeof 来判断他们的类型,因为都是 返回 object。
constructor 属性
constructor 属性返回所有 JavaScript 变量的构造函数。
"John".constructor // 返回函数 String()
(3.14).constructor // 返回函数 Number()
JavaScript 类型转换
将数字转换为字符串
全局方法 String() 可以将数字转换为字符串:
String(x) // 将变量 x 转换为字符串并返回
String(123) // 将数字 123 转换为字符串并返回
Number 方法 toString() 也是有同样的效果;
x.toString()
(123).toString()
将布尔值转换为字符串
全局方法 String() 可以将布尔值转换为字符串。
String(false) // 返回 "false"
Boolean 方法 toString() 也有相同的效果。
false.toString() // 返回 "false"
将日期转换为字符串
Date() 返回字符串。
String(new Date()) // 返回 Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time);
将字符串转换为数字
全局方法 Number() 可以将字符串转换为数字。
Number("3.14") // 返回 3.14
Number(" ") // 返回 0
Number("") // 返回 0
Number("1 2") // 返回 NaN
将布尔值转换为数字
全局方法 Number() 可将布尔值转换为数字。
Number(false) // 返回 0
Number(true) // 返回 1
将日期转换为数字
全局方法 Number() 可将日期转换为数字。
d = new Date();
Number(d) // 返回 1404568027739
日期方法 getTime() 也有相同的效果。
d = new Date();
d.getTime() // 返回 1404568027739
自动转换类型
当 JavaScript 尝试操作一个 "错误" 的数据类型时,会自动转换为 "正确" 的数据类型。
以下输出结果不是你所期望的:
2+ null // 返回 2 null 转换为 0
"2" + null // 返回"2null" null 转换为 "null"
"2" + 1 // 返回 "21" 1 转换为 "1"
"2" - 1 // 返回 1 "2" 转换为2