JS类型转换

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

尝试一下 »

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值