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>

posted @ 2020-07-19 11:15  幻樱落日剑  阅读(89)  评论(0)    收藏  举报