JS 数据类型转换 方法主要有三种
转换函数、强制类型转换、利用js变量弱类型转换。
1.转换函数:
js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。
- parseInt()
parseInt 从左向右一位一位去查看,如果遇到一位是非数字的,结束执行,把这位之前的数字返回
例如
var nub = "a100px";
nub = parseInt(nub);
console.log(nub,typeof nub);
//其中parseInt(要转换的数字,传进来的数字的进制);
//parseInt也常被用来取整
- parseFloat 转换成小数(转换为浮点数)
从左向右一位一位的匹配,直到遇到一个非数字(可以匹配一个小数点)就返回这位前边的数字
例如
var nub = "12.234.34";
nub = parseFloat(nub);
console.log(nub);
2. 强制类型转换
或者显示类型转换
- Nubmer (要转换的数字)
从左向右看完所有的字符,如果完全符合数字的规则就转换,如果不符合数字的规则就返回NaN
例如
var nub = "12.234";
nub = Number(nub);
console.log(nub);
<script type="text/javascript"> var nub = false; // true = 1, false = 0;var nub; //NaNvar nub = null; //0var nub = document; //NaNvar nub = [10,2];//0 /* 空数组 0 空数组只有一位的时候,会用这位去转换,并且只转换数字和字符串,其他的都是NaN 数组有多位,只会被转换成NaN */ var nub = function(){}; //NaN nub = Number(nub); console.log(nub); </script>
3.隐式类型转换
浏览器自己进行转换,其他类型转换成数字,主要调去Number
- number
- +,+=
- 当加号左右两侧有一位是字符串是,会把另外一侧也转成字符串;
- 使用+号时,两边没有字符串时,优先尝试把左右两侧都转换成数字,如果不能转换成数字就转换成字符串进行连接
-
- -,*,/,%,-=,*=,/=,%=
运算符左右两侧转换成数字进行运算
例如
<script type="text/javascript"> console.log(null + false,0 + function(){}); var nub = "20px"; var nub2 = "30px"; console.log(nub/nub2);
</script>
<script type="text/javascript"> // isNaN类型number //不等于任何数,也不等于它自己 var a = Number("10px"); var b = Number("10px"); alert( a == b) //输出 false;
// isNaN(要检测的内容)如果转化结果是一个数字,就返回 false ,如果不是一个数字 就返回 true,会进行隐式类型转换,转换调用的方法是 number;
</script>
- toString 转换成字符串
<script type="text/javascript"> var a = 123; a = a.toString(); console.log(a,typeof a); var b = ['','2']; b = b.toString(); console.log(b,typeof b); </script>
- 布尔值
真 | true | 非空字符串 | 非0数字 | 非空对象 | 空数组 | |
假 | false | 空字符串 | 0 | NaN | null | undefined |
- !取反
<script type="text/javascript"> alert(!"21323"); alert(Boolean(123)); </script>