js 是一个弱类型语言 没有类型限制 可以放心大胆赋予变量任何数据类型 但是数据本身和运算符是有数据类型的 所以在操作的时候注意下 如果运算时 被运算符发现数据类型不匹配 它会自动进行类型转换
扯下前面列的点
数据类型
基本数据类型: Number String Boolean Undefined Null
引用数据类型: Object {Object [] {}}
数据类型的显示转换 隐式转换
显示转换
显示转换: 通过调用特定方法(手动) 进行数据类型转换
基本类型:
转换为number类型
- Number(1)
parseInt(string,radix)
parseInt() 函数可解析一个字符串,并返回一个整数。parseInt("10"); //返回 10 parseInt("19",10); //返回 19 (10+9) parseInt("11",2); //返回 3 (2+1) parseInt("17",8); //返回 15 (8+7) parseInt("1f",16); //返回 31 (16+15) parseInt("010"); //未定:返回 10 或 8复制代码
注意点: 字符串中第一个数字会被返回 如果字符串中没有数字 或者第一位不是数字都会返回NaN
- parseFloat(string)
转换为字符串类型
- toString(radix)
- String(mix)
对布尔转换
Number(true) // 1 parseInt(true) // NaN parseFloat(true) // NaN Number(false) // 0 parseInt(false) // NaN parseFloat(false) // NaN复制代码
注意点: Number转boolean true返回1 false返回0
对null转换
Number(null) //0 parseInt(null) // NaN parseFloat(null) // NaN复制代码
对undefined转换
Number(undefined) // NaN parseInt(undefined) // NaN parseFloat(undefined) // NaN复制代码
引用类型:
{} 转 字符串
{}.toString() //[object Object] String({}) //[object Object]复制代码
[] 转 字符串
[1,2,3].toString() //"1, 2, 3" String([1,2,3]) //"1, 2, 3"复制代码
fun 转 字符串
var a = function () {} console.log(String(a)) // "function () {}"复制代码
转换为Boolean
Boolean(undefined) // false Boolean(null) // false Boolean(0) // false Boolean('') // false Boolean(NaN) // false Boolean({}) // true Boolean([]) // true Boolean(function(){}) // true复制代码
注意点: 除了引用类型为true 其他都是false
显示转换总结: 方便记忆
- parseInt和parseFloat只能转换数字或者数字开头的其他全部是NaN
- Number构造函数可以转换数字或者数字字符串如果字符串中含有除数字之外的其他字符则返回NaN 在转换null、''时 返回0 其余都是NaN
- boolean只需要记住五个特殊值即可