1 /** 2 * 类型转换 3 * 4 * JavaScript 数据类型 5 * 1.不同的数据类型 6 * string 7 * number 8 * object 9 * boolean 10 * function 11 * 12 * 2.对象类型 13 * Object 14 * Date 15 * Array 16 * 17 * 3.不包含任何值的数据类型 18 * null 19 * undefined 20 * 21 * typeof操作符查看JS的数据类型 22 * 23 * constructor(构造器)属性 24 * */ 25 26 console.log(typeof('John'));//string 27 console.log(typeof(3.14));//number 28 console.log(typeof(NaN));//number 29 console.log(typeof(false));//boolean 30 console.log(typeof([1,2,3,4]));//object,数组也是一种对象 31 console.log(typeof({name: 'John', age:34}));//object 32 console.log(typeof(new Date()));//object 33 console.log(typeof(function () {}));//function 34 console.log(typeof(myCar));//undefined 35 console.log(typeof(null));//object,null是一个空对象 36 37 /** 38 请注意: 39 NaN 的数据类型是 number 40 数组(Array)的数据类型是 object 41 日期(Date)的数据类型为 object 42 null 的数据类型是 object 43 未定义变量的数据类型为 undefined 44 */ 45 46 //如果对象是Array或Date,就无法用typeof来判断它们的类型,因为都是返回object 47 48 /**constructor(构造器)属性*/ 49 //constructor 属性返回所有JavaScript变量的构造函数 50 console.log('John'.constructor);//function String() { [native code] } 51 console.log((3.14).constructor);//function Number() { [native code] } 52 console.log(false.constructor);//function Boolean() { [native code] } 53 console.log([1,2,3,4].constructor);//function Array() { [native code] } 54 console.log({name: 'John', age: 34}.constructor);//function Object() { [native code] } 55 console.log(new Date().constructor);//function Date() { [native code] } 56 console.log(function () {}.constructor);//function Function() { [native code] } 57 58 //使用constructor属性查看对象是否为数组或日期 59 function isArray(arr) { 60 return arr.constructor.toString().indexOf('Array') > -1; 61 } 62 63 64 function isDate(date) { 65 return date.constructor.toString().indexOf('Date') > -1; 66 } 67 68 console.log(isArray([1,2,3]));//true 69 console.log(isArray('456'));//false 70 71 console.log(isDate(new Date()));//true 72 console.log(isDate('vvv'));//false 73 74 //数字转化为字符串 75 //String(myNumber) 全局方法 76 //myNumber.toString() Number对象方法 77 //更多的Number对象方法:http://www.runoob.com/jsref/jsref-obj-number.html 78 console.log(typeof(String(123)));//string 79 console.log(typeof((100 + 23).toString()));//string 80 81 //将布尔值转换为字符串 82 String(false); 83 String(true); 84 85 false.toString(); 86 true.toString(); 87 88 //将日期转换为字符串 89 //在 Date 方法 中,你可以查看更多关于日期转换为字符串的函数 90 //Date方法:http://www.runoob.com/jsref/jsref-obj-date.html 91 console.log(String(Date()));//Tue Mar 29 2016 23:11:01 GMT+0800 (中国标准时间) 92 console.log(Date().toString());//Tue Mar 29 2016 23:11:25 GMT+0800 (中国标准时间) 93 94 //将字符串转换为数字 95 //全局方法Number() 96 //在 Number 方法 中,你可以查看到更多关于字符串转为数字的方法 97 //Number方法:http://www.runoob.com/jsref/jsref-obj-number.html 98 console.log(Number('3.14'));//3.14 99 console.log(Number(" "));//0 100 console.log(Number(""));//0 101 console.log(Number('99 88'));//NaN 102 103 //一元运算符+ 104 var y = '5'; 105 console.log(typeof(+y));//number 106 107 //如果不能转换,它仍然会是一个数字,但值为NaN 108 var z = 'John'; 109 console.log(typeof(+z));//number 110 console.log(+z);//NaN 111 112 //将布尔值转换为数字 113 console.log(Number(false));//0 114 console.log(Number(true));//1 115 116 //将日期转换为数字 117 console.log(Number(new Date()));//1459265021379 118 console.log(Number(new Date().getTime()));//1459265068371 119 120 //自动转换类型 Type Conversion 121 //当 JavaScript 尝试操作一个 "错误" 的数据类型时,会自动转换为 "正确" 的数据类型。 122 console.log(5 + null);//5, null为0 123 console.log('5' + null);//5null 124 console.log('5' + 1);//51 125 console.log('5' - 1);//4 126 127 //当你尝试输出一个对象或一个变量时 JavaScript 会自动调用变量的 toString() 方法: 128 document.getElementById("demo").innerHTML = myVar; 129 130 // if myVar = {name:"Fjohn"} // toString 转换为 "[object Object]" 131 // if myVar = [1,2,3,4] // toString 转换为 "1,2,3,4" 132 // if myVar = new Date() // toString 转换为 "Fri Jul 18 2014 09:08:55 GMT+0200" 133 //数字和布尔值也经常相互转换: 134 // if myVar = 123 // toString 转换为 "123" 135 // if myVar = true // toString 转换为 "true" 136 // if myVar = false // toString 转换为 "false"