强制数据类型转换
1.强制转换为数字
parseInt(string, radix) 将数据转换为整数返回
- 第一个参数接受的是个字符串也就是我们要转换的数据
- 第二个参数 基数,也可以理解为 标注出我们要转换的这个字符串是几进制的数字
parseFloat(string) 转换成浮点数(也就是小数)
从左往右依次转换,一个一个转,当遇到自己无法转换的字符,就停止转换。
var num = '1a2.a3';
var num2 = parseFloat(num);
console.log(num2); // NaN 不是一个数字
Number(val) 将数据转换成数字
字符串类型,使用 Number() 转换时,规则如下:
1.当整段字符串都复合数字规则时,转换为数字返回
2.空字符串,直接返回 0
3.其余情况,直接返回 NaN
Number 耿直 必须得是全数字,如果含有非数字型字符,那就返回NaN
var num = '12.3';
var num2 = Number(num);
console.log(num2); // NaN
布尔值类型,使用 Number() 转换时,true 返回 1,false 返回 0
null,使用 Number() 转换时 返回 0
undefined,使用 Number() 转换时 返回 NaN
对象类型,使用 Number() 转换时,调用的对象的toString()方法,然后再次依照前面字符串的转换规则进行转换
NaN 和 isNaN
在使用 NaN 时,要注意 NaN 不等于任何值,包括它自己,也就是 NaN 不等于 NaN。
- 它不是数字的数字类型!
- 当我们要检测一条数据是否是 NaN 时,可以使用 isNaN(val) 来进行检测, 在 isNaN 方法中,传入的数据能被转换成 合法数字时,
就会返回 false,当传入的数据不能被转换成 合法数字( 也就是NaN) 时,isNaN 就会返回 true
isNaN 在判断之前 会给 字符串转成数字( 调用Number方法)
console.log(isNaN('123'))
console.log(isNaN('123a'));
2. String(val) 转换成字符串
- 数字类型,直接转换数据类型原样返回
- undefined ,直接返回字符串 undefined
- null,直接返回字符串 null
- 布尔值,直接返回字符串 true 或者 false
- 函数,直接把整个函数变成字符串 返回
- 对象,直接调用对象的 toString 方法
3.Boolean(val) 转换成布尔值
- 数字类型:非零的合法数字转换为 true, 零代表 false, NaN 代表 false
- 字符串类型:空字符串转换为false,非空字符串转换为true
- null:转换为false
- 对象:转换为true
隐式类型转换
隐式数据类型转换,也就是说这个转换过程不受我们强制, js 偷偷自己转的