@[TOC]数据类型的相互转换
简述
数据类型的转换是不会改变原始的数据,返回的值必定是一个新的数据
强制转换
Number(value)在保留字符串的基础上转换字符串中的所有数字,如果该字符串中有除数字外的其他值则返回NaN转换数值(number)类型
//纯数值的字符串
var num1="1.345"
//输出转换后的值
console.log(Number(num1))//返回1.345且为number类型
//参带字母的字符串
var num2="233abc"
//输出转换后的值
console.log(Number(num2))//返回NaN,因为该字符串中出现了不是数字的值
//布尔类型
var num3=true
//输出转换后的值
console.log(Number(num3))//返回1,因为布尔值的true对应的数值是1,false对应的数值是0
parseInt()在转换时只保留整数部分,并且只能转换数值的字符串parseInt()与parseFloat,都可以转换字符串为数值类型,前者为整数,后者为小数
//纯数值的字符串
var num1="3.345"
//输出转换后的变量
console.log(Number(num1))//返回3且为number类型
//参带字母的字符串
var num2="233abc"
//输出转换后的变量
console.log(Number(num2))//返回NaN,因为该字符串中出现了不是数字的值
//布尔值转换
var num3=true
//输出转换后的值
console.log(Number(num3))//返回NaN
parseFloat()在转换时保留完整的数字,并且只能转换数值的字符串
//纯数值的字符串
var num1="6.345"
//输出转换后的变量
console.log(Number(num1))//返回6.345且为number类型
//参带字母的字符串
var num2="233abc"
//输出转换后的变量
console.log(Number(num2))//返回NaN,因为该字符串中出现了不是数字的值
//布尔值转换
var num3=true
//输出转换后的值
console.log(Number(num3))//返回NaN
Boolean(value)转换字符串或数值为布尔值,不是true就是false转换布尔(boolean)类型
//除了4种值转换为false外其他的值都是true
var num = 3
console.log(Boolean(num))//返回true
//当转换对象为空字符串、数字0、undefined或null时都是false
var num2 = "", num3 = 0, num4 = undefined, num5 = null
console.log(Boolean(num2),Boolean(num3),Boolean(num4),Boolean(num5))//均返回false
String(value)转换数值或布尔值为字符转换字符串(string)类型
代码片
.
//数值
var num = 6
console.log(String(num))//返回6且是字符串类型的
//布尔值
var str = false
console.log(String(str))//返回false且是字符串类型
隐式转换
1、转成string类型: +(字符串连接符)
字符相连,数值相加
//声明两个不同类型的数据
var a = 3222
var b = "abc"
console.log(a+b)//返回3222abc,是个字符串,字符相加改变了原来的类型
//声明两个数值
var num1 = 233
var num2 = 466
console.log(num1+num2)//返回699,这就是数字相加
//如果两个数字有一个是字符串
var num3 = 666
var num4 = "222"
console.log(num3+num4)//返回666222,因为字符串的相连的特性也改变整体的类型
2、转成number类型
第一种:++/–(自增自减运算符)
第二种: + - * / %(算术运算符)
第三种:>
<
>=
<=
==
!=
===
!===
(关系运算符)
//第一种
var str = "2"
console.log(++str)//返回3,先自增再赋值然后输出,得到的是数值(number)类型
//第二种
var str2 = "6"
console.log(+str2)//返回6,得到的是数值(number)类型
//第三种
var f=9
if(f){
console.log(233)//输出233,在上面的if()中f会被隐式转换成true作为条件进入然后再输出
}
console.log(f)//输出9且还是数值(number)类型,因为隐式转换的值没有办法接收只是临时作用所以原来的值并不做改变
3、转成boolean类型:!(逻辑非运算符)
// 声明一个字符串
var foo = 'bar'
console.log(!foo)//返回false,在取反时会先进行布尔转换为true再取反为false输出false