Number()转换为数字,string()转换为字符串,Boolean()转换为布尔值。
JS数据类型
在JS中有6种不同的数据类型:
string
number
Boolean
object
function
symbol
3种对象类型
object
date
array
2个不包含任何值的数据类型:
null
undefined
typeof操作符
可以使用typeof操作符来查看JS变量的数据类型
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body> <p> typeof 操作符返回变量、对象、函数、表达式的类型。</p> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = typeof "john" + "<br>" + typeof 3.14 + "<br>" + typeof NaN + "<br>" + typeof false + "<br>" + typeof [1,2,3,4] + "<br>" + typeof {name:'john', age:34} + "<br>" + typeof new Date() + "<br>" + typeof function () {} + "<br>" + typeof myCar + "<br>" + typeof null; </script> </body> </html>
请注意:
NAN的数据类型是number
数组(Array)的数据类型是object
日期(date)的数据类型为object
null的数据类型是object
未定义变量的数据类型为undefined
如果对象是JS array或者js date,我们就无法通过typeof来判断他们的类型,因为都是返回object
constructor 属性
constructor属性返回所有js变量的构造函数
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body> <p> constructor 属性返回变量或对象的构造函数。</p> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = "john".constructor + "<br>" + (3.14).constructor + "<br>" + false.constructor + "<br>" + [1,2,3,4].constructor + "<br>" + {name:'john', age:34}.constructor + "<br>" + new Date().constructor + "<br>" + function () {}.constructor; </script> </body> </html>
可以使用constructor属性来查看对象是否为数组(包含字符串“array)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body> <p>判断是否为数组。</p> <p id="demo"></p> <script> var fruits = ["Banana", "Orange", "Apple", "Mango"]; document.getElementById("demo").innerHTML = isArray(fruits); function isArray(myArray) { return myArray.constructor.toString().indexOf("Array") > -1; } </script> </body> </html>
可以使用constructor属性来查看对象是否为日期(包含字符串“date”)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body> <p>判断是否为日期。</p> <p id="demo"></p> <script> var myDate = new Date(); document.getElementById("demo").innerHTML = isDate(myDate); function isDate(myDate) { return myDate.constructor.toString().indexOf("Date") > -1; } </script> </body> </html>
JS类型转换
JS变量可以转换为新变量或其他数据类型:
通过使用JS函数
通过JS自身自动转换
将数字转换为字符串
全局方法string()可以将数字转换为字符串
该方法可用于任何类型的数字,字母,变量,表达式
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body> <p> String() 方法可以将数字转换为字符串。</p> <p id="demo"></p> <script> var x = 123; document.getElementById("demo").innerHTML = String(x) + "<br>" + String(123) + "<br>" + String(100 + 23); </script> </body> </html>
number方法tostring()也是有同样的效果
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body> <p>toString() 方法将数字转换为字符串。</p> <p id="demo"></p> <script> var x = 123; document.getElementById("demo").innerHTML = x.toString() + "<br>" + (123).toString() + "<br>" + (100 + 23).toString(); </script> </body> </html>
在number方法章节中,你可以找到更多数字转换为字符串的方法
方法 | 描述 |
toexponential() | 把对象的值转换为指数计数法 |
toFixed() | 把数字转换为字符串,结果的小数点后制定位数的数字 |
toPrecision() | 把数字格式化为指定的长度 |
将布尔值转换为字符串
全局方法string()可以将布尔值转换为字符串
string(FALSE)//返回“fasle"
string(true) //返回“true"
boolean方法tostring()也有相同的效果
false.tostring()//返回“false"
true.tostring()//返回“true”
将日期转换为字符串
DATE()返回字符串
date()//返回thu jul 17 2014 15:38:19 gmt+0200
全局方法string()可以将日期对象转换为字符串
string(new date())//返回thu jul 17 2014 15:38:19 gmt+0200
date方法tostring()也有相同的效果。
obj=newdate()
obj.tostring()//返回thu jul 17 2014 15:38:19 gmt+0200
在date方法章节中,你可以查看更多关于日期转换为字符串的函数:
方法 | 描述 |
getdate() | 从date对象返回一个月中的某一天(1-31) |
getday() | 从date对象返回一周中的某一天(0-6) |
getfullyear() | 从date对象以四位数字返回年份 |
gethours() | 返回date对象的小时(0-23) |
getmillsecoonds() | 返回date对象的毫秒(0-999) |
gettime() | 返回1970年1月1日至今的毫秒数 |
将字符串转换为数字
全局方法NUMber()可以将字符串转换为数字
字符串包含数字(如“3.14”)转换为数字(如3.14)
空字符串转换为0
其他字符串会转换为NAN(不是个数字)
number(“3.14”)//返回3.14
number(“ ”)//返回0
number("")//返回0
number(“99 88”)//返回NaN
在number方法章节中,你可以查看更多关于字符串转换为数字的方法:
方法 | 描述 |
parsefloat() | 解析一个字符串,并返回一个浮点数 |
parselnt() | 解析一个字符串,并返回一个整数 |
一元运算符+
operator+可用于将变量转换为数字:
实例:
var y="5"; //y是一个字符串
var x=+y;//x是一个数字
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body> <p> typeof 操作符返回变量或表达式的类型。</p> <button οnclick="myFunction()">点我</button> <p id="demo"></p> <script> function myFunction() { var y = "5"; var x = + y; document.getElementById("demo").innerHTML = typeof y + "<br>" + typeof x; } </script> </body> </html>
点我
如果变量不能转换,它依然会是一个数字,但值为NaN(不是一个数字)
实例
var y="John";//y是一个字符串
var x=+y;//x是一个数字(NaN)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body> <p> typeof 操作符返回变量或表达式的类型。</p> <button οnclick="myFunction()">点我</button> <p id="demo"></p> <script> function myFunction() { var y = "John"; var x = + y; document.getElementById("demo").innerHTML = typeof x + "<br>" + x; } </script> </body> </html>
将布尔值转换为数字
全局方法number()可将布尔值转换为数字。
d=new date();
number(d) //返回1404568027739
日期方法gettime()也有相同的效果
d=new date();
d.gettime()//返回1404568027739
自动转换类型
当JS尝试操作一个“错误”的数据类型时,会自动转换为“正确”的数据类型
以下输出结果不是你所期望的:
5+null //返回5 null转换为0
“5”=null //返回“5null” null转换为“null"
"5"+1//返回“51' 1转换为”1“
“5”-1 //返回4 “5”转换为5
自动转换为字符串
当你尝试输出一个对象或一个变量时,JS会自动调用变量的tostring()方法
docunment.getElementById("demo").innerHTML=myvar;
myvar={name:"Fjohn"}//tostring 转换为“1,2,3,4”
myvar=new date() //tostring转换为“Fri Jul 18 2014 09:08:55 GMT+0200"
数字和布尔值也经常互相转换:
myvar=123 //tostring 转换为“123”
myvar =true //tostring 转换为“true”
myvar=FALSE //tostring转换为“FALSE”
下表展示了使用不同的数值转换为数字(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 |