JavaScript数据类型转换

一:强制转换

JavaScript计算时主动将数据的类型强制转换成某种类型
首先计算机中任何数据进行计算都需要转换成二进制

1、强转字符串
(1)String(数据) (所有类型都可以转换)
(2)(数据). toString (null 和 undefined 不能转换 )
(数据). toString(n) 将数字转换成 n 进制字符 (进制必须大于等于 2 且小于等于36 )
(3)(数据). toFixed(n) 数值转成字符串并保留小数点后 n 位,四舍五入(存在误差)
比如:
var a = null
String(a)//“null”
var b = undefined
String(b)//“undefined”
String({a: 1}) // “[object Object]”
String([1, 2, 3]) // “1,2,3”
var a = 123
a.toString()//“123”
var b = null;
b.toString()//“报错”
var c = undefined
c.toString()//“报错”

2、强转数值
(1)Number(数据)
纯数字字符 =>数字; 纯字母字符 => NaN; 带字母字符 => NaN; null => 0; undefined => NaN;
true => 1; false => 0
(NaN 含义是非数值,它的类型是 number )
比如
Number(2) <=2
Number(a) <=NaN
Number("") <=0
Number(true) <=1
Number(false) <=0
Number(undefined) <=NaN
Number(null) <=0
Number("") <=0
Number({}) <=NaN

3、强转整型
(1)parseInt( )
纯数字字符 =>数字; 纯字母字符 / 以字母开头的带数字字符 => NaN; null => NaN; undefined => NaN;
true => NaN; false => NaN;
数字开头带字母的字符 => 转换到第一个字母字符前为止,前面的数字字符转成数字

(2)parseInt ( str , n ) 将 n 进制字符串str 转换成 10进制数值
没有n,默认以10进制显示str字符串并转换程10进制数值
parseInt ( str , n ) 是 (数据). toString(n)的逆转换

(3)强转浮点型
parseFloat(); 可以保留小数位 同parseInt

比如:
console.log(parseInt(’.21’)); //NaN
console.log(parseInt(“10.3”)); //10
console.log(parseFloat(’.21’)); //0.21
console.log(parseFloat(’.d1’)); //NaN
console.log(parseFloat(“10.11.33”)); //10.11
console.log(parseFloat(“4.3years”)); //4.3
console.log(parseFloat(“He40.3”)); //NaN
console.log(parseInt(“13”)); //13
console.log(parseInt(“11”,2)); //3
console.log(parseInt(“17”,8)); //15
console.log(parseInt(“1f”,16)); //31

4、强转布尔型
Boolean(数值);
(1)空字符串 var str1 = “”;
(2)数值 0 var str2 = 0;
(3)false var str3 = false;
(4)未定义 var str4;
(5)null var str5 = null;
(6)NaN var str6 = NaN;
除以上六点为false以外,其余均为 true
比如:
Boolean({}) // true
Boolean([]) // true
Boolean(new Boolean(false)) // true

二:隐式转换

弱类型语句中,类型不同,弱类型语言会自动将数据转换为相同类型,然后运算
隐式转换遵从 String() Number() Boolean()
比如:
+‘abc’ // NaN
-‘abc’ // NaN
+true // 1
-false // 0
true + 1 // 2
2 + null // 2
undefined + 1 // NaN
2 + NaN // NaN 任何值和NaN做运算都得NaN
‘5’ - ‘2’ // 3
‘5’ * ‘2’ // 10
true - 1 // 0
‘1’ - 1 // 0
‘5’ * [] // 0
false / ‘5’ // 0
‘abc’ - 1 // NaN
‘5’ + 1 // ‘51’
‘5’ + true // “5true”
‘5’ + false // “5false”
‘5’ + {} // “5[object Object]”
‘5’ + [] // “5”
‘5’ + function (){} // “5function (){}”
‘5’ + undefined // “5undefined”
‘5’ + null // “5null”
10 + " name" => “10 name”,数字10转换成字符串
“7” * “4” => 28,字符串被自动转换成数字
let a = 1 - “x”, =>NaN,字符串"x"无法转换为数字
a + " name" => “a name”,NaN转换为字符串"NaN"

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值