类型转换
1、数据类型 2、显示类型转换 3、隐示类型转换
1、ECMAScript最新的7中数据类型
原始类型 Number String Boolean Null Undefined Symbol(es6)
对象 Object
2、显示类型转换
1)Number函数
<script type="text/javascript"> /** * 原始类型:数值,字符串,布尔值,undefined,null */ console.log(Number(324)) // 324 // 字符串转换后如果可以被解析成数值,则转换为相应的数值,否则得到NaN console.log(Number('324')) // 324 console.log(Number('324abc')) // NaN console.log(Number('')) // 0 // true转成1,false转成0 console.log(Number(false)) // 0 // 转成NaN console.log(Number(undefined)) // NaN // 转成0 console.log(Number(null)) // 0 /** * 对象类型 * 先调用对象自身的valueOf方法,如果该方法返回原始类型的值,则直接对该值使用Number * 方法,不再进行后续步骤 * * 如果valueOf返回复合类型的值,再调用对象自身的toString方法,如果toString方法 * 返回原始类型的值,则对该值使用Number方法,不再进行后续步骤 * * 如果toString方法返回的是复合类型的值,则报错 */ var a = {a:1} console.log(Number(a)); // NaN /** * 为什么是这个值,首先调用对象自身的valueOf方法,a.valueOf返回的是一个对象,复合类型{a:1} * 再调用对象自身的toString方法,a.toString,这个时候返回是基本类型字符串"[object Object]" * 这个时候Number('[object Object]') 就变成了NaN */ </script>
2)String函数
<script type="text/javascript"> /** * 原始类型:数值,字符串,布尔值,undefined,null */ console.log(String(123)); // "123" console.log(String('abc')); // "abc" console.log(String(true)); // "true" console.log(String(undefined)); // "undefined" console.log(String(null)); // "null" /** * 对象 * 先调用toString方法,如果toString方法返回的是原始类型的值,则对值使用String方法, * 不再进行以下步骤 * * 如果toString方法返回的是复合类型的值,再调用valueOf方法,如果valueOf方法返回的 * 是原始类型的值,则对该值使用String方法,不再进行以下步骤。 * * 如果valueOf方法返回的是复合类型的值,则报错 */ console.log(String({a:1})) // "[object Object]" // b.toString() 返回 "[object Object]" 是字符串,就不再继续了 </script>
3)Boolean函数
<script type="text/javascript"> /** * 原始类型:undefined,null,-0,+0,NaN,'' => false */ console.log(Boolean(undefined)); console.log(Boolean(0)); console.log(Boolean(NaN)); console.log(Boolean(null)); console.log(Boolean('')); // 其他一律为true console.log(Boolean([])); // true console.log(Boolean({})); // true </script>
3、隐示类型转换
1)四则运算(加法,减法,乘法,除法)
2)判断语句
3)Native调用
<script type="text/javascript"> // 四则运算 console.log(100 + 10); // 110 console.log(100 + '10'); // 10010 //判断语句 var a = 100; if (a) { console.log('a come in'); } var b = ''; if(b) { console.log('b come in') } // 打印出了a come in,没打印出b come in // native代码调用 alert({a:1}); // [Object Object] </script>