Number()转换为数字,String()转换为字符串,Boolean()转换为布尔值。
在JavaScript中有6种不同的数据类型:
string number boolean object function symbol
3种对象类型:
Object Date Array
2个不包含任何值的数据类型:
null undefined
typeof 操作符
可以使用 typeof 操作符来查看 JavaScript 变量的数据类型。
<script>
typeof "John" //返回 string
typeof 3.14 //返回 number
typeof NaN //返回 number
typeof false //返回 boolean
typeof [1,2,3,4] //返回 object
typeof {name:'John',age:34} //返回 object
typeof new Date() //返回 object
typeof function(){} //返回 function
typeof myCar //返回 undefined(如果 myCar 没有声明)
typeof null //返回 object
</script>
注意:
NaN 的数据类型是 number
数组(Array)的数据类型是 object
日期(Data)的数据类型为 object
null的数据类型是 object
未定义变量的数据类型为 undefined
如果对象是 JavaScript Array 或 JavaScript Date,我们就无法通过 typeof 来判断他们的类型,因为返回的都是 object。
constructor 属性
constructor 属性返回所有JavaScript变量的构造函数。
<script>
"John".constructor //返回函数 String(){[native code]}
(3.14).constructor //返回函数 Number(){[native code]}
false.constructor //返回函数 Boolean(){[native code]}
[1,2,3,4].constructor //返回函数 Array(){[native code]}
{name:'John',age:34}.constructor //返回函数 Object(){[native code]}
new Date().constructor //返回函数 Date(){[native code]}
function().constructor //返回函数 Function(){[native code]}
</script>
可以使用 constructor 属性来查看对象是否为数组(包含字符串"Array"):
<script>
function isArray(myArray){
return myArray.constructor.toString().indexOf("Array") > -1;
}
</script>
也可以使用 constructor 属性来查看对象是否为日期(包含字符串"Date"):
<script>
function isDate(myDate){
return myDate.constructor.toString().indexOf("Date") > -1;
}
</script>
JavaScript 类型转换
JavaScript 变量可以转换为新变量或其他数据类型:
通过使用JavaScript函数
通过JavaScript自身自动转换
将数字转换为字符串
全局方法 string() 可以将数字转换为字符串。
该方法可以用于任何类型的数字,字母,变量,表达式:
<script>
String(x) //将变量 x 转换为字符串并返回
String(123) //将数字 123 转换为字符串并返回
String(100+23) //将数字表达式转换为字符串并返回
</script>
Number方法 to String() 也是有同样的效果。
<script>
x.toString()
(123).toString()
(100+23).toString()
</script>
方法 | 描述 |
toExponential() | 把对象的值转换为指数计数法。 |
toFixed() | 把数字转换为字符串,结果的小数点后有指定位数的数字。 |
toPrecision() | 把数字格式化为指定的长度 |
将布尔值转换为字符串
全局方法 String() 可以将布尔值转换为字符串。
<script>
String(false) // 返回 "false"
String(true) // 返回 "true"
</script>
Boolean 方法 to String() 也有相同的效果。
<script>
false.toString() // 返回 "false"
true.toString() // 返回 "true"
</script>
将日期转换为字符串
Date() 返回字符串
<script>
Date() //返回 Tue Jul 05 2022 14:28:21 GMT+0800 (中国标准时间)
</script>
全局方法 String() 可以将日期对象转换为字符串。
<script>
String(new Date()) // 返回 Tue Jul 05 2022 14:29:35 GMT+0800 (中国标准时间)
</script>
Date 方法 to String() 也有相同的效果。
<script>
obj = new Date()
obj.toString() //返回Tue Jul 05 2022 14:47:15 GMT+0800 (中国标准时间)
</script>
方法 | 描述 |
getDate() | 从 Date 对象返回一个月中的某一天(1~31)。 |
getDay() | 从 Date 对象返回一周中的某一天(0~6)。 |
getFullYear() | 从Date 对象以四位数字返回年份。 |
getHours() | 返回 Date 对象的小时(0~23)。 |
getMilliseconds() | 返回 Date 对象的毫秒数(0~999)。 |
getMinutes() | 返回 Date 对象的分钟(0~59)。 |
getMonth() | 从 Date 对象返回月份(0~11)。 |
getSeconds() | 返回 Date对象的秒数(0~59)。 |
getTime() | 返回 1970年1月1日至今的毫秒数。 |
将字符串转换为数字
全局方法 Number() 可以将字符串转换为数字。
字符串包含数字(如"3.14")转换为数字(如3.14)。
空字符串转换为 0。
其他的字符串会转换为 NaN(不是个数字)。
<script>
Number("3.14") //返回 3.14
Number(" ") //返回 0
Number("") //返回 0
Number("99 88") //返回 NaN
</script>
方法 | 描述 |
parseFloat() | 解析一个字符串,并返回一个浮点数。 |
parseInt() | 解析一个字符串,并返回一个整数。 |
一元运算符 +
Operator + 可用于将变量转换为数字:
<script>
var x = "5"; // x 是一个字符串
var y = + x; // y 是一个数字
</script>
如果变量不能转换,它依然会是一个数字,但值为NaN (不是一个数字):
<script>
var x = "John"; // x 是一个字符串
var y = + x; // y 是一个数字(NaN)
</script>
将布尔值转换为数字
全局方法 Number() 可将布尔值转换为数字。
<script>
Number(false) //返回 0
Number(true) //返回 1
</script>
将日期转换为数字
全局方法 Number() 可将日期转换为数字。
<script>
d = new Date();
Number(d) // 返回 1404568027739
</script>
日期方法 getTime() 也有相同的效果。
<script>
d = new Date();
d.getTime() //返回 1404568027739
</script>
自动转换类型
当JavaScript尝试操作一个“错误”的数据类型时,会自动转换为“正确”的数据类型。
以下输出结果不是你所期望的:
<script>
5 + null //返回 5 null 转换为 0
"5" + null //返回"5null" null 转换为"null"
"5" + 1 //返回"51" 1 转换为"1"
"5" - 1 //返回 4 "5" 转换为 5
</script>
自动转换为字符串
当尝试输出一个对象或一个变量时 JavaScript 会自动调用变量的 toString()方法:
<script>
document.getElementById("demo").innerHTML = myVar;
myVar = {name:"Fjohn"} // toSting 转换为 "[object Object]"
myVar = [1,2,3,4] // toString 转换为 "1,2,3,4"
myVar = new Date() //toString 转换为 "Tue Jul 05 2022 15:16:17 GMT+0800 (中国标准时间)
</script>
数字和布尔值也经常相互转换:
<script>
myVar = 123 //toString转换为 "123"
myVar = true //toString转换为 "true"
myVar = false //toString转换为 "false"
</script>
下表展示了使用不同的数值转换为数字(Number),字符串(String),布尔值(Boolean):
原始值 | 转换为数字 | 转换为字符串 | 转换为布尔值 |
false | 0 | "false" | false |
true | 1 | "true" | true |
0 | 0 | "0" | false |
1 | 1 | "1" | true |
"0" | 0 | "0" | true |
"000" | 0 | "000" | true |
"1" | 1 | "1" | true |
NaN | NaN | "NaN" | false |
Infinity | Infinity | "Infinity" | true |
-Infinity | -Infinity | "-Infinity" | true |
"" | 0 | "" | false |
"20" | 20 | "20" | true |
"Runoob" | NaN | "Runoob" | true |
[] | 0 | "" | true |
[20] | 20 | "20" | true |
[10,20] | NaN | "10,20" | true |
["Runoob"] | NaN | "Runoob" | true |
["Runoob","Google"] | NaN | "Runoob,Google" | true |
function(){} | NaN | "function(){}" | true |
{} | NaN | "[object Object]" | true |
null | 0 | "null" | false |
undefined | NaN | "undefined" | false |