一、强制类型转换
将其他的类型转换为String,Number,Boolean
1、转换为String类型
方式一:调用被转换数据的toString()方法,该方法不会影响原变量
注意:null和undefined这两个值没有toString()方法,如果调用他们的方法就会报错。
例子:
var a=123;
console.log(typeof a.toString());/a=a.toString();
输出[Web浏览器] "string"
a=null/undefined;
a.toString();(报错)
方式二:调用String()函数,并将被转换的数据作为参数传递给函数
var a=123;
a=String(a);
console.log(typeof a);
输出[Web浏览器] "string"
2、转换为Number类型
方式一:使用Number函数
注意:如果是纯数字的字符串,则直接将其转换为数字,
如果是字符串中含有非数字的字符和undefined,则转换为NaN,
全部空格或者空字符或者null转换为0,布尔值的true转为1,false转为0
var a="123";
a=Number(a);
console.log(typeof a);
输出[Web浏览器] "number"
方式二:这种方式专门对付有包含非数字的字符串
1、parseInt()把一个字符串转换为一个整数
如果数字开头则会提取直到遇到第一个非数字字符为止之前的数字,
如果非数字字符开头则会转为NaN
var a="12p3";//12
var b="px123"//NaN
a=parseInt(a);
b=parseInt(b);
console.log(a);
console.log(b);
输出:
[Web浏览器] "12"
[Web浏览器] "NaN"
特殊:例如"070"字符串有些浏览器是当成8进制,有些当成10进制
解决:可以在parseInt(a,10)中传递两个参数,第一个表示要转化的字符串,第二个表示要转化成的进制
2、parseFloat()把一个字符串转换为一个浮点数
如果数字开头则会提取"."后遇到第一个非数字字符为止之前的数字,
如果非数字字符开头则会转为NaN
var a="12.222p3";
var b="px123"
a=parseFloat(a);
b=parseFloat(b);
console.log(a);
console.log(b);
输出:
[Web浏览器] "12.222"
[Web浏览器] "NaN"
注意:如果对非String使用parseInt()\parseFloat(),
它会先将其转换为String,然后再转换
则布尔值true/false null\undefined使用以上两种方式都为NaN
var a=true;
var b=null;
var c=undefined;
a=parseInt(a);
b=parseInt(b);
c=parseInt(c);
console.log(a);
console.log(b);
console.log(c);
输出:
[Web浏览器] "NaN"
[Web浏览器] "NaN"
[Web浏览器] "NaN"
3、转换为Boolean
使用Boolean()函数
数字——>布尔
除了0和NaN为false,其余都为true
字符串——>布尔
除了空串为false,其余都为ture
null和undefined都是false
对象也会转化为true
二、其他进制的数字
1、16进制
在js中16进制都是0x开头,输出的时候都会转为10进制输出
var a=0xff;
console.log(a);
输出:[Web浏览器] "255"
2、8进制
在js中8进制的数字都是以0开头,输出时会转化为10进制
var a=033;
console.log(a);
输出:[Web浏览器] "27"
3、2进制
在js中2进制使用0b开头,输出时转换为10进制,
但不是所有浏览器或者编译器都支持
var b=0b10;