JavaScript 类型转换

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):

原始值转换为数字转换为字符串转换为布尔值
false0"false"false
true1"true"true
00"0"false
11"1"true
"0"0"0"true
"000"0"000"true
"1"1"1"true
NaNNaN"NaN"false
InfinityInfinity"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
null0"null"false
undefinedNaN"undefined"false

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值