<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script>
/*
* 类型转换
* 把一种数据类型转换成另外一种数据类型
*
* js支持把任意一咱数据类型转换成以下类型,只能转成以下三种
* 数字
* 字符串
* 布尔值
*
* 对象转成这三种数据是没有意义的,因为对象里可以放其中的任意数据类型。
*
* ====================================================
* 任意类型转数字
* 一、Number(要转换的值)
* 1、Undefined:转成数字的结果为NaN
* 2、Null:转数字的结果为0;
* 3、Boolean:
* true:1
* false:0;
* 4、String
* 空字符串,空格字符串转数字结果为0
* 字符串里的内容不是一个纯数字,如果是个纯数字的话,就转成对应的数字
* 如果说不是一个纯数字,那结果就是NaN
* 5、Number
* 数字转数字的结果还为原来的数字
* 把字符串转成数字
* parseInt() 把字符串转成整数型数字
* parseFloat() 把字符串转成浮点(小数)数字
*
* 传进来的字符串必需是数字或是空格加数字开头,它会从数字开始,一位一位住后找,直到到的字符不是数字,就会停止,会把找到的数字,字符转成真正的数字,如果没找到则把一个NaN。
*
*===========================================
* isNaN()
* 判断一个值是不是NaN();不是判断数字的,是判断是不是NaN,它会先把参用Number()转一下;
* 它具有一个功能是用来检测数字的,但是它的本意并不是用来检测数字的。
*
* 如果参数的结果为NaN,那它返回一个true
* 如果参数的结果不为NaN,那它返回一个false
*
*/
var u = undefined;
console.log(Number(u)); //NaN
var nul=null;
console.log(Number(nul));//0
var b1 = true;
var b2 = false;
console.log(Number(b1),Number(b2));
var s1 ='';
var s2 = ' ';
var s3 = 'asdf';
var s4 = '012';
var s5 = '12a';
var s6 = '12*12';
console.log(Number(s1));//0
console.log(Number(s2));//0
console.log(Number(s3));//NaN
console.log(Number(s4));//12
console.log(Number(s5));//NaN
console.log(Number(s6));//NaN
var o1=[];
var o2 ={};
console.log(Number(o1));//0
console.log(Number(o2));//NaN
var p1 = '100px';
var p2 = ' 100px';
var p3 = 'px100';
var p4 = '100.25m1';
var p5 = '0123';
console.log(parseInt(p1));//100
console.log(parseInt(p2));//100
console.log(parseInt(p3));//100
console.log(parseInt(p4));//100.25
console.log(parseInt(p5));//123
var n =NaN;
var n2='as';
console.log(isNaN(n));//true
console.log(isNaN(n2));//true 用Number
</script>
</head>
<body>
</body>
</html>