JS 数据类型转换,强制数据类型转换,隐式数据类型转换
一、强制类型转换
<script type="text/javascript">
//强制数据类型转换
//[1]转字符串
//数值转字符串
var a = 100;
console.log(typeof a.toString()) ; //类型为String
var b = NaN;
b = b.toString();
console.log( b); //输出NaN、字符串类型
console.log( typeof b);
//Boolean转字符串
var a1 = true;
a1 = a1.toString();
console.log(a1); //输出true
console.log(typeof a1); //String
//转字符串使用的方法:变量名.toString(); 返回一个转后结果
//转字符串就是本身的内容的形式加上两个引号后的效果
//[2]转Boolean
//字符串转Boolean
var aa = 'you';
var bb = 'true';
var cc = '99';
var dd = '';
var ee = ' ';
console.log(Boolean(aa));
console.log(Boolean(bb));
console.log(Boolean(cc)); //只要有内容均是true
console.log(Boolean(dd)); //除了空字符串是false
console.log(Boolean(ee));
//数字转Boolean
var a2 = 10;
var b2 = 0;
var c2 = -20;
var d2 = NaN;
console.log(Boolean(a2)); //true
console.log(Boolean(b2)); //false
console.log(Boolean(c2)); //true
console.log(Boolean(d2)); //false
//NaN和0是false,其他数字均是true
//[3]转数字
/* 转数字有三种方法
1,Number(变量名)
2. parseInt(变量名)
3. parseFloat(变量名)
*/
//字符串转数字
var a3 = '0';
var b3 = 'abc';
var c3 = "";
var d3 = "NaN";
var e3 = "10.356";
var f3 = "100.25c55";
var g3 = "you100.96";
console.log(Number(a3)); // 0
console.log(parseInt(a3)); // 0
console.log(parseFloat(a3)); // 0
console.log(Number(b3)); // NaN
console.log(parseInt(b3)); // NaN
console.log(parseFloat(b3)); // NaN
console.log(Number(c3)); // 0 空字符串是0,如空字符串转Boolean是false, false再转数字还是0,自己找的设计一点关联,其他肯定是错的
console.log(parseInt(c3)); // NaN
console.log(parseFloat(c3)); // NaN
console.log(Number(d3)); // NaN
console.log(parseInt(d3)); // NaN
console.log(parseFloat(d3)); // NaN
console.log(Number(e3)); //10.356
console.log(parseInt(e3)); //10
console.log(parseFloat(e3)); //10.356
console.log(Number(f3)); //NaN
console.log(parseInt(f3)); //100
console.log(parseFloat(f3)); //100.25
console.log(Number(g3)); //NaN
console.log(parseInt(g3)); //NaN
console.log(parseFloat(g3)); //NaN
//如果是纯数字
//number转正常数字,parseInt取整数部分,parseFloat转正常数字
//如果是空字符串
//number转0,parseInt和parseFloat转NaN
//如果不是纯数字
//数字开头且后面有其他字符
//number是NaN,parseInt取字符前的整数部分,parseFloat取字符前的全部
//不是数字开头
//number,parseInt,parseFloat全是NaN
//完全字符
//全NaN
//Boolean转数字
var a4 = true;
var b4 = false;
console.log(Number(a4)); // 1
console.log(parseInt(a4)); // NaN
console.log(parseFloat(a4)); // NaN
console.log(Number(b4)); // 0
console.log(parseInt(b4)); // NaN
console.log(parseFloat(b4)); // NaN
//Number会将true变为1,false变为0,
//其他parseInt,parseFloat均是NaN
//undefined->字符,数字,Boolean
var x;
// console.log(x.toString()); 报异常Undefined不能转换字符串
console.log(Boolean(x)); //false
console.log(Number(x)); //NaN
console.log(parseInt(x)); //NaN
console.log(parseFloat(x)) //NaN
//只有Boolean可以转换为false,数字转换是NaN,字符串不能转换。
//null->字符,数字,Boolean
var n = null ;
// console.log(n.toString()); 报异常Undefined不能转换字符串
console.log(Boolean(n)); //false
console.log(Number(n)); //0
console.log(parseInt(n)); //NaN
console.log(parseFloat(n)) //NaN
//null 不能转字符串 Number 是0,parseInt和parseFloat是NaN
</script>

二、隐式数据类型转换
<script type="text/javascript">
var a = "120";
var b = 58;
console.log(a+b); //字符串178
console.log(a-b); //数字62
//做+操作是拼接字符串
//做-的时候是吧数据转换为number类型,
console.log(false-''); //false转number是0,''转number是0,结果所以是0
var aa = "111oyou";
var bb = 89;
console.log(aa-bb); //因为-所以把111oyou转换为number类型,就是NaN,NaN任何操作结果还是NaN
//NaN和其他操作都是NaN

/*总结:
隐式数据类型转换
[1]做+操作
是+操作把数据内容接起来,
[2]做-,*,/操作
都是把非数字数据类型使用Nmuber转换为数值型,再做数学计算
注意:如果转换出来的数据有NaN,那么结果就是NaN
*/
</script>

浙公网安备 33010602011771号