JavaScript是一种弱类型语言。
特点:
1.声明变量时不需要提前指定数据类型。
2.同一个变量可先后保存不同的数据类型。
3.js会自动根据自身需要自动类型转换。
var a=1;
var b=true;
var c="string";
console.log(a+b);//2
console.log(a+c);//"1string"
具体的转换方式会在运算符中逐一说明。
强制转换
程序员主动调用函数,完成的类型转换。
任意类型转为String类型
输出时或需要转为字符串时使用。
方法一:
x.toString();//x为需要转为字符串的值,以下如无特殊说明,均指同一个含义。
注意:null和undefined没有toString方法,因为null和undefined没有包装类型。
方法二:
String(x);
所有都可以转为字符串,包括null和undefined。
实际上String()与toString()是调用关系:
function String(x){
if(x===undefined){
return "undefined";
}else if(x===null){
return "null";
}else{
return x.toString();
}
}
注:“===”是全等符号,读作“全等于”,在后面运算符中会具体说。
x.toString()与x.valueOf()的区别
1.valueOf从对象中获取封装的值,所得到的不一定是字符串类型。
2.toString一定返回字符串类型。
3.valueOf在计算是,自动调用,属于隐式转换。
任意类型转为Number类型
方法一:
Number(x);
相当于隐式转换,仅支持纯数字组成的内容或bool类型。
Number("123")=123
Number(true)=1
几个特殊的:
Number("")=0
Number(" ")=0
Number([])=0
方法二:
parseFloat(str);
专门读取字符串前面的数字部分(自动过滤最开始的空字符),不能转bool类型。
parseFloat("123")=123
parseFloat("23string")=23
parseFloat(" 123asd")=123
parseFloat(" 12 3asd")=12
parseFloat(true)=NaN
如果转不了:返回NaN。
Number("JavaScript")=NaN
NaN —— Not a Number.
NaN无效的数字类型值。
NaN如果做算数计算,永远返回NaN。
NaN不大于,不小于,不等于任何值。
任意类型转Boolean类型
Boolean(x);
只有五个值会转为false,其余的都转成true.
转为false的值为:0 , “” , NaN , null , undefined